我需要一个高性能的消息总线为我的应用程序,所以我评估性能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
:大约需要1秒才能收到10,000条消息。ZeroMQ
:大约需要15毫秒来接收10,000条消息。Qpid
:大约需要4秒钟才能收到10,000条消息。
问题:
- 是否有人在消息队列之间运行类似的性能比较?然后,我想将我的结果与您的结果进行比较。
- 有什么方法可以调整
RabbitMQ
或Qpid
使其性能更好?
注意:
测试是在具有两个分配处理器的虚拟机上完成的。结果因不同的硬件而异,但是我主要对MQ产品的相对性能感兴趣。