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来使性能比较与使用代理的其他消息队列实现公平。QpidC++ 消息代理:我使用了“扇出”类型的交换和默认配置的队列。我使用了 Qpid C++ 客户端库。
以下是性能结果:
RabbitMQ: 接收 10,000 条消息大约需要 1 秒。ZeroMQ: 接收 10,000 条消息大约需要 15 毫秒。Qpid: 接收 10,000 条消息大约需要 4 秒。
问题:
- 有没有人在消息队列之间进行类似的性能比较?然后我喜欢将我的结果与你的结果进行比较。
- 有什么方法可以调整
RabbitMQ或Qpid使其性能更好吗?
笔记:
测试是在分配有两个处理器的虚拟机上完成的。结果可能因不同的硬件而异,但我主要对 MQ 产品的相对性能感兴趣。