NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C# C#으로 MSMQ를 이용한 메세지 처리하기. (Microsoft Message Queue)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 이 예제를 테스트 하기전에 로컬 윈도우에 MSMQ를 설치해야 합니다. 아직 설치하지 않았다면~ [ Windows 10에 MSMQ 설치하기 ]를 읽어보시고 환경 셋팅을 해주세요. 제가 일하고 있는 산업군은 대부분 서버 프로그래밍에 자바를 이용하고 있습니다. 금융쪽이나 제조쪽은 서버 머신(Machine)이 리눅스를 사용하기 때문입니다. 하지만, 장비(Equipment) 업체는 윈도우를 사용하는 경우가 종종 있습니다. 이번에 맡게된 프로젝트도 윈도우에 메세지를 처리할 수 있는 서버 구축입니다. 물론, 가끔 소개했던 메세지 처리 미들웨어를 사용해도 됩니다. 대표적으로 Tibco Rendezvous, 미라콤, ActiveMQ, RabbitMQ 및 ZeroMQ가 있습니다. 이외에도 제가 모르는 메세지 큐가 있을수도 있지만, 제가 해본건 저정도입니다.

    irOddFS.png

     

     

    MQ(Message Queue)를 사용하면, 각기 다른 시간에 실행되는 응용 프로그램이 이기종 네트워크 및 시스템 또는 오프라인 상태(타임아웃 시간만큼...)가 되더라도 서로 통신할 수 있습니다. 쉽게 말해서 카카오톡으로 메세지를 보내는 동안 메세지를 받는 상대방의 와이파이(WiFi) 또는 인터넷이 오프라인이 되었다고 생각해보세요. 온라인이 되면 메세지가 밀려 들어오는것을 알 수 있습니다. 간단한 예를 들었지만, 많은 산업군에서도 메세지 큐를 사용하고 있습니다. 응용 프로그램은 큐에서 메세지 Send(보내기), Receive(받기), Peeking(엿보기, 메세지를 읽지만 큐에서 제거하지 않음)을 할 수 있습니다. 대략 메세지 큐가 어떤것인지에 대해 설명 드렸는데요. 검색해서 오신분들은 이미 알고 있는 내용일겁니다. C#으로 메세지 큐를 구현하는 방법에 대해 간단하게 알아보도록 하겠습니다. 우선, Visual Studio를 실행하고 새로운 콘솔 프로젝트를 생성 해줍니다.

    JXxs4Ip.png

     

     

    상단에 메세지 큐를 사용하기 위해 유징 지시문을 추가 해줍니다.

    using System.Messaging;

     

    Main 메소드에 새로운 메세지 큐를 생성 해줍니다. 개인 로컬 환경이기 때문에 개인(Private) 공간에 NewQueue 이름으로 생성 했습니다. 생성된 큐는 "C:\Windows\System32\msmq\storage\lqs" 경로에서 확인할 수 있습니다.

    namespace MSPC
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                MessageQueue myQueue = MessageQueue.Create(".\\Private$\\NewQueue");
            }
        }
    }

     

    큐를 생성했으면 메세지를 큐에 넣어봅시다. 큐의 Send 메소드에 "Welcome to NGMsoftware!" 메세지를 보냅니다.

    myQueue.Send("Welcome to NGMsoftware!");

     

    동일한 큐를 사용하기 때문에 바로 아래에 아래와 같이 Receive 메소드로 큐에서 메세지를 가져옵니다.

    Message msg = myQueue.Receive();

     

    메세지를 출력창에 표시합니다. 보통은 Console.WriteLine을 사용하는데요. 이 프로젝트는 콘솔 프로젝트이기 때문에 아래와 같이 해야 비주얼 스튜디오의 출력에 메세지가 표시됩니다.

    System.Diagnostics.Debug.WriteLine(msg.Body.ToString());

     

    더이상 메세지 큐를 사용하지 않기 때문에 Delete 메소드를 사용해서 폐기해줍니다.

    MessageQueue.Delete(".\\Private$\\NewQueue");

     

    아래는 전체 코드입니다.

    using System.Messaging;
    
    namespace MSPC
    {
        internal class Program
        {
            static void Main(string[] args)
            {
                MessageQueue myQueue = MessageQueue.Create(".\\Private$\\NewQueue");
                myQueue.Send("Welcome to NGMsoftware!");
    
                Message msg = myQueue.Receive();
                System.Diagnostics.Debug.WriteLine(msg.Body.ToString());
                MessageQueue.Delete(".\\Private$\\NewQueue");
            }
        }
    }

     

    프로젝트를 실행하면 콘솔창이 잠깐 표시되고, NewQueue에 메세지를 보냅니다. 그리고, 메세지를 꺼내서 비주얼 스튜디오의 출력창에 받은 메세지를 표시합니다.

    aIYPHli.png

     

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.