【腾讯文档】各种消息中间件对比
消息队列 - 图1

RabbitMQ

RabbitMQ基于ErLang语言开发,吞吐量较Kafka与RocketMQ要低,且由于其不是Java开发,所以定制化开发难度较大。

ActiveMQ

ActiveMQ基于Java语言开发,早期很多公司与项目都在使用,但现在社区活跃度已经很低,很少使用了。

RocketMQ

RocketMQ基于Java语言开发,经过数年阿里双11的考验,性能与稳定性非常高。其没有遵循任何常见的MQ协议,而是使用自研协议。对于Spring Cloud Alibaba,其支持RabbitMQ、Kafka,但提倡使用RocketMQ。

Kafka

Kafka基于Scala/Java语言开发,其最大的特点是高吞吐率,常用于大数据领域的实时计算、日志采集等场景。其没有遵循任何常见的MQ协议,而是使用自研协议。

ZeroMQ

ZeroMQ是一个跨语言的开源库,他为可伸缩的分布式或并发应用程序设计的高性能异步消息库。它提供一个消息队列,但是与面向消息的中间件不同,ZeroMQ的运行不需要专门的消息代理(message broker)。该库设计成常见的套接字(Socket)风格的API。特点是高吞吐量,但不支持消息持久化。