常见的消息队列产品

Friday, August 2, 2019

RabbitMQ

兔子MQ,用了Erlang语言编写,最早为电信行业系统之间的可靠通信设计的,少数几个支持AMQP协议的消息队列。

优点

  • 轻量级,迅捷,开箱即用的消息队列,非常容易部署和使用
  • 支持非常灵活的路由配置,它在生产者和队列之间增加了一个Exchange模块,简单点说就是交换机的作用。
  • 客户端支持的编程语言非常多

缺点

  • 对消息堆积的支持不好,它的设计理念中,消息队列时一个管道,不应该又大量的消息积压。当出现消息积压时,RabbitMQ性能会急剧下降。
  • 性能是目前流行的消息队列产品中最差的,每秒几万到十几万的消息。
  • 编程语言比较小众,是Erlang,大部分人不熟悉。

RocketMQ

优点

  • 性能,稳定和可靠性都比较优秀,属于毕竟均衡的消息队列
  • 阿里巴巴开发的,有比较活跃的中文社区
  • 对响应延迟做了很多优化
  • 性能大概是每秒处理几十万条消息

缺点

  • 在国际上没那么流行,与周边生态的集成和兼容程度要略差一点

Kafka

优点

  • 与周边生态系统的兼容性最好,尤其在大数据和流计算领域,几乎所有的相关开源软件系统都会优先支持kafka
  • 使用Scala和JAVA开发,设计上使用了批量和异步的思想,使得kafka做到了超高的性能,尤其是异步收发的性能,是三者最好的。但没有与Rocket有量级的差距,每秒处理几十万条消息

缺点

  • 同步收发消息的响应延迟比较高,客户端发送一条消息的时候,kafka并不会立刻发送出去,而是攒一波再发送。所以消息数量没那么多的时候,延迟反而高。kafka不适合在线业务场景。
消息队列

主题和队列的区别

消息队列作用