메시지 큐(Message Queue) 비교
메시지 지향 미들웨어(Message Qriented Middleware:MOM)은 비동기 메시지를 사용하는 다른 응용프로그램 사이에서 데이터 송수신을 의미
- 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리 가능
- 비동조(Decoupling): 애플리케이션과 분리 가능
- 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않음
- 과잉(Redundancy): 실패할 경우 재실행 가능
- 보증(Guarantees): 작업이 처리된걸 확인할 수 있음
- 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있음
.
Message Queueing은 대용량 데이터를 처리하기 위한 배치 작업이나, 채팅 서비스, 비동기 데이터를 처리할 때 메세지 브로커를 두어서 필요한 프로그램에 작업을 분산시키는 방법을 사용
- 다른 곳의 API로부터 데이터 송수신이 가능
- 다양한 애플리케이션에서 비동기 통신을 할 수 있음
- 이메일 발송 및 문서 업로드가 가능
- 많은 양의 프로세스들을 처리할 수 있음
특징
- AMQP(Advanced Message Queue Protocol) 프로토콜 구현
- Mnesia 사용
- 얼랭 기반으로 높은 신뢰성과 분산 어플리케이션 구축 가능.
- 뛰어난 범용성을 가지고 있음.
- 기본적으로 클러스터링 지원. 추가로 좀 더 높은 트래픽을 처리하기 위해 셔블, 페더레이션 플러그인 제공.
- 무료 오픈 소스 제공
장점
- 실시간 모니터링 관리 용이
- 다양한 언어 지원
- 클러스터링 가능
단점
- Windows OS 시, Erlang, OpenSSL 설치필요
특징
- 메시지 큐라기보다는 소켓과 비슷한 개념
- 비동기 통신, queue를 다이나믹하게 생성
- inproc, ipc, tcp, pgm, epgm 등 다양한 전송 매체 사용 가능
- 다양한 언어를 지원
- 여러 패턴을 통해서 가용성, 신뢰성, 안전성, 확장성 등을 원하는 대로 구현 가능
- in-memory message buffer만 제공하므로 영속성은 없음
장점
- 속도가 빠르고 가벼움
- Broker가 필요 없음
- 교통수단을 가리지 않고 사용 가능
단점
- 메시지 내구성이 없음
- 신뢰성이 다소 떨어짐
- .NET에서 제공하는 메시지 큐
- 큐 관리가 편리하다.
장점
- GUI에서 큐 추가 삭제 등 관리할 수 있다.
- 다양한 기능이 제공된다.
단점
- 속도가 상대적으로 느리다.
|
RabbitMQ
|
ZeroMQ
|
MSMQ
|
성능
|
보통(상대적)
|
빠름(상대적)
|
느림(상대적)
|
WinOS
|
O
|
O
|
O
|
환경구성
|
C++, C#
|
C++, C#
|
C++, C#
|
Server 설치
|
Erlang19, RabbitServer 3.64
|
X
|
MSMQWindows 4.0 기능 설정 설치
|
Client 설치
|
RabbitMQ.Client 3.5
|
ZeroMQ 4.1.0.31
|
MSMQWindows 4.0 기능 설정 설치
|
프로토콜
|
AMQT
|
없음(TCP)
|
O
|
모니터링(GUI)
|
O
|
X
|
O
|
큐 추가/삭제
|
O
|
X
|
O
|
멀티캐스팅
|
O
|
O
|
O
|
내구성(저장방식)
|
O 동기화,자동복원
|
X
|
O
|
유료여부
|
무료
|
무료
|
무료
|
메시지 추가/삭제
|
X
|
X
|
O
|
5.1.1 메시지 큐 속도 비교
1K 메시지 초당 전송 개수(실험환경 Windows Vista)
홈페이지 : http://kr.zeromq.org/
설치
1. 생성된 프로젝트 VisualStudio 2015 메뉴바 –프로젝트-Nuget패키지 관리 선택
2. ZeroMq 검색후 사양에 맞춰서 설치
샘플코드
1. Server : http://zguide.zeromq.org/cs:hwserver
2. Client : http://zguide.zeromq.org/cs:hwclient
홈페이지 : https://www.rabbitmq.com/
설치
1. Erlang 19 다운로드 및 설치
http://www.erlang.org/download.html 에서 windows용 파일을 받아 설치하기
2. rabbitMQ 3.64 windows 버전 다운로드 및 설치
http://www.rabbitmq.com/download.html 에서 installer 버전을 받아 설치
3. plugins 설치
명령 프롬프트에서 c:/Program Files/RabbitMQ Server/rabbitmq_server-x.x.x/sbin 으로 이동후 rabbitmq-plugins enable rabbitmq_management 커맨드 실행
4. RabbitMQ 서비스 재시작
윈도우키 -> 서비스 선택 후 RabbitMQ 재시작
5. http://localhost:15672 로 접속하여 guest/guest 로 접속하여 관리UI 확인
6. 생성된 프로젝트 VisualStudio 2015 메뉴바 –프로젝트-Nuget패키지 관리 선택
7. RabiitteMq 검색후 RabbitMq Client 사양에 맞춰서 설치
샘플 코드
1. https://www.rabbitmq.com/tutorials/tutorial-one-python.html
홈페이지 : https://docs.microsoft.com/ko-kr/dotnet/framework/wcf/samples/installing-message-queuing-msmq
설치
1. DotNetFrameWork 4.0 이상 설치
(https://www.microsoft.com/en-in/download/details.aspx?id=17718)
2. 시작버튼 > 제어판 > 프로그램 및 기능 > Windows 기능사용 / 사용안함
3. 트리 목록 중에서 Microsoft Message Queue(MSMQ) Server 항목 선택 후 확인 버튼
4. 컴퓨터 다시 시작 메시지 나타나면 클릭 확인 설치 완료
GUI 관리 창
시작버튼 > 제어판 > 관리도구 > 컴퓨터 관리 > 서비스 및 응용프로그램 > 메시지 큐
샘플 코드
1. https://www.codeproject.com/Articles/5830/Using-MSMQ-from-C
MSMQ GUI 도구