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 产品的相对性能感兴趣。