NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 다수의 매크로 컴퓨터에 메세지를 주고 받는 방법. (ActiveMQ TCP 통신 액션 이동)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로에는 다수의 매크로 컴퓨터가 어떤 로직 또는 루틴에 의해 서로 메세지를 주고 받을 수 있는 기능이 포함되어 있습니다. 엔지엠 매크로에서 사용하는 메세지 버스(Message Bus)는 ActiveMQ(액티브앰큐)와 Kafka(카프카)를 사용합니다. 일반적으로 ActiveMQ를 사용하는데요. 이 예제에서도 ActiveMQ를 이용하도록 하겠습니다. 카프카 관련 예제도 준비되는대로 올려드릴께요^^

     

    우선, ActiveMQ 공식 사이트에서 프로그램을 다운로드 받아서 적절한 위치에 압축을 풀어주세요. 이 예제에서는 "E:\activemq" 위치에 압축을 풀었습니다.

    [ 액티브앰큐 다운로드 ]

     

    첨부되어 있는 스크립트 파일의 압축을 풀고, 에디터에 각각 열어주세요. 서버 역할을 하는 매인 컴퓨터의 스크립트입니다. 만약, 별도의 서버가 필요하다면 아래 프로그램을 사용할수도 있습니다. 아래 프로그램을 매인 컴퓨터에 실행하고, 각각의 컴퓨터에서는 액티브앰큐 서버 액션을 사용하면 안됩니다. 네트워크 공간에 서버는 하나만 실행되어 있어야 하기 때문입니다.

    ActiveMQ Server Manager 다운로드 ]

    B1lX2Gs.png

     

     

    첫번째 변수는 다른 컴퓨터로부터 수신한 메세지를 저장하기 위한 메모리 공간입니다. [ 액티브앰큐 서버 매니저 ]를 사용하지 않는 경우에는 아래와 같이 액티브앰큐 서버 액션을 사용해야 합니다. 네트워크 공간에서 이 액션은 하나만 사용되어야 합니다. 컴퓨터가 10대 있다면 1대의 컴퓨터에서만 저 액션이 실행되어야 합니다. 액티브앰큐 서버 매니저를 사용하면 모든 컴퓨터의 스크립트에 액티브앰큐 서버 액션을 사용하면 안됩니다.

    ※ 네트워크 공간에서 액티브앰큐 서버가 사용할 61616 포트를 사용하면 안됩니다. 만약, 이 포트를 사용하고 있다면 액티브앰큐 서버에는 다른 포트를 할당하세요.

    6IPa7yj.png

     

     

    이벤트를 사용하는 이유는 언제 메세지가 전달될지 모르기 때문입니다. 백그라운드에서 메세지를 캐치하려면 이벤트를 사용해야 합니다. 그래야 실시간으로 메세지를 처리할 수 있습니다. 액티브앰큐 관련 자료를 참고하시면 각각의 속성에 대해 어떤 역할을 하는지 이해할 수 있습니다.

    • 브로커 타입: Queue 또는 Topic. Queue는 메세지를 보낼 때 가장 먼저 메세지를 수신한 컴퓨터만 동작합니다. Topic은 모든 컴퓨터가 메세지를 받습니다.
    • 액션 이동 아이디: 메세지를 수신하면 이동할 액션의 아이디입니다.
    • 액션 이동 파라메터 이름: 메세지를 보낼 때 파라메터를 추가해서 보낼 수 있습니다. 받는 측에서 이 값을 토대로 액션 이동을 로직적으로 처리합니다.
    • 큐 또는 토픽 이름: 메세지를 주고 받을 때 동일한 이름을 사용하는 컴퓨터만 메세지를 받습니다. 그룹으로 관리할 때 유용합니다.
    • 포트: 액티브앰큐 데몬 서버의 포트입니다.
    • 호스트: 액티브앰큐 데몬 서버의 아이피입니다.

    mAbuwQS.png

     

     

    이벤트에서 메세지를 받으면 액션이 b로 이동합니다. 그리고, 다시 반복 루틴으로 보냅니다. 이렇게 하는 이유는 매크로가 완료되지 않도록 하기 위함입니다. 매크로가 완료되거나 중지되면 더이상 메세지를 받을 수 없습니다. 이번에는 메세지를 보내는 컴퓨터를 셋팅 해보겠습니다. 아래와 같이 에디터를 하나 더 실행하고, 액티브앰큐 프로듀서 스크립트를 열어주세요. 첫번째 에디터의 서버 설정과 동일하게 옵션들을 설정하세요.

    8oPQqrw.png

     

     

    테스트 해보면 아래 동영상과 같이 동작합니다. 오른쪽의 서버 컴퓨터는 계속 동작하고 왼쪽의 메세지 프로듀서에서 보낼 내용을 변경하면서 실행 해보세요.

     

     

    이번에는 이벤트의 액션 이동 파라메터 이름에 대해 알아보겠습니다. 이 옵션의 용도는 좀 더 다양한 환경에 대응하기 위한 하나의 분기 로직이라고 이해하시면 됩니다. 메세지를 보내는 컴퓨터가 분기 로직에 따라 A, B, C, D 아이디로 이동하고 싶을 수 있습니다. 위의 예제에서는 무조건 B 액션으로만 이동했는데요. 파라메터를 사용하면 다양한 분기로 이동이 가능합니다. 이벤트를 각각 등록했습니다.

    SnBRqhN.png

     

     

    파라메터를 컴퓨터별로 각각 등록하거나 하나의 스크립트에 여러개를 등록해도 됩니다. 파라메터를 등록하면 액션 이동 아이디는 무시됩니다. 여러대의 컴퓨터 또는 스크립트의 이벤트에 파라메터 이름이 실패인 경우 b 액션으로 이동한다는 의미입니다.

    XViSgOz.png

     

     

    서버 구성 및 처리가 다양한 환경에서 동작해야 하기 때문에 로직이 복잡하고 분기가 많을수록 스크립트에서도 로직이 복잡해집니다. 가능하면 단순한 방식으로 사용하는게 좋고 복잡한 로직은 데이타베이스에서 질의문(Query: 쿼리) 또는 스토어드 프로시저(Stored Procedure)를 사용하세요. 엔지엠 매크로의 데이타베이스 액션들을 사용하면 좀 더 편리하고 관리할 수 있습니다. 하지만, 메세지 방식으로 사용하려면 액티브앰큐가 실시간으로 처리되고 더 좋습니다.

     

    어떤 처리를 모든 컴퓨터가 액티브하게 처리되어 한다면 액티브앰큐가 좋고 매니지 측면이 강한 데이터 또는 관리라면 데이타베이스가 더 효율적입니다. 여기서 효율적이라는 말은 유지보수, 비용, 시간, 관리등등... 전체를 아우르는 말입니다. 복잡하게 구현하면 유지보수와 관리가 어렵고 버그에 대응하기가 쉽지 않습니다. 단순하게 처리하면 관리 측면에서 얻는 이점이 많습니다. 어떤게 더 좋은지에 대한 정답은 없습니다. 어떻게 시스템을 구축하고, 관리하는지에 따라 달라질 수 있는 부분입니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.