我需要为我的应用程序提供高性能的消息总线,所以我正在评估ZeroMQ , RabbitMQ和Apache Qpid 。 为了衡量性能,我正在运行一个testing程序,该程序使用消息队列实现之一发布10,000条消息,并在同一台计算机上运行另一个进程来消费这10,000条消息。 然后logging发布的第一封邮件和收到的最后一封邮件的时差。 以下是我用于比较的设置。 RabbitMQ :我使用了“扇出”types的交换和一个默认configuration的队列。 我使用了RabbitMQ C客户端库。 ZeroMQ :我的发布者使用ZMQ_PUSH套接字发布到tcp://localhost:port1 ,我的代理在tcp://localhost:port1上侦听,然后将消息重新发送到tcp:// localhost:port2,我的使用者在tcp://localhost:port2上侦听tcp://localhost:port2使用ZMQ_PULL套接字。 我在ZeroMQ使用一个代理而不是点对点通信的代理来使性能比较对使用代理的其他消息队列实现公平。 Qpid C ++消息代理:我使用了“扇出”types的交换和一个默认configuration的队列。 我使用了Qpid C ++客户端库。 以下是性能结果: RabbitMQ :收到10,000条消息需要大约1秒的时间。 ZeroMQ :接收10,000条消息需要大约15毫秒的时间。 Qpid :接收10,000条消息需要大约4秒的时间。 问题: 有没有人在消息队列之间运行类似的性能比较? 然后我喜欢将我的结果与你的结果进行比较。 有什么办法可以调整RabbitMQ或Qpid使其性能更好? 注意: testing是在两台分配的处理器的虚拟机上完成的。 结果可能因硬件而异,但我主要关注MQ产品的相对性能。