애플리케이션에 고성능 메시지 버스가 필요하므로 ZeroMQ
, RabbitMQ
및의 성능을 평가 하고 Apache Qpid
있습니다. 성능을 측정하기 위해 메시지 큐 구현 중 하나를 사용하여 10,000 개의 메시지를 게시하고 동일한 시스템에서 다른 프로세스를 실행하여 10,000 개의 메시지를 소비하는 테스트 프로그램을 실행하고 있습니다. 그런 다음 첫 번째 게시 된 메시지와 마지막으로받은 메시지 사이의 시차를 기록합니다.
다음은 비교에 사용한 설정입니다.
RabbitMQ
: 기본 구성으로 "팬 아웃"유형 교환 및 대기열을 사용했습니다. RabbitMQ C 클라이언트 라이브러리를 사용했습니다.ZeroMQ
: 내 게시자tcp://localhost:port1
가ZMQ_PUSH
소켓 을 사용 하여 게시 하고 , 내 브로커tcp://localhost:port1
는 메시지를 수신하고 tcp : // localhost : port2로 다시 전송하고 내 소비자는 소켓 을tcp://localhost:port2
사용하여 수신ZMQ_PULL
합니다. 나는 브로커를 사용하는ZeroMQ
다른 메시지 큐 구현과 성능 비교를 공정하게 만들기 위해 피어 투 피어 통신 대신 브로커를 사용하고 있습니다.Qpid
C ++ 메시지 브로커 : "팬 아웃"유형 교환과 기본 구성의 대기열을 사용했습니다. Qpid C ++ 클라이언트 라이브러리를 사용했습니다.
다음은 성능 결과입니다.
RabbitMQ
: 10,000 개의 메시지를 수신하는 데 약 1 초가 걸립니다.ZeroMQ
: 10,000 개의 메시지를 수신하는 데 약 15 밀리 초가 걸립니다.Qpid
: 10,000 개의 메시지를 수신하는 데 약 4 초가 걸립니다.
질문 :
- 메시지 대기열간에 유사한 성능 비교를 실행 한 사람이 있습니까? 그런 다음 내 결과를 귀하의 결과와 비교하고 싶습니다.
- 튜닝
RabbitMQ
하거나Qpid
성능을 향상 시킬 수있는 방법이 있습니까?
노트 :
테스트는 두 개의 프로세서가 할당 된 가상 머신에서 수행되었습니다. 결과는 하드웨어마다 다를 수 있지만 주로 MQ 제품의 상대적 성능에 관심이 있습니다.