同学们,经常有人问,消息队列的种类繁多,在进行项目规划时到底该怎么选呢?相信很多同学都有同样的困惑。其实市面上常用的消息队列也就三个,分别是 rabbitmq、rocketmq 和 kafka 。
咱们几年前搭建框架时,选择的是 rabbitmq 。当时主要是觉得它在 spring cloud 里集成方便,有相关界面能自定义路由规则、指定消费队列,比较人性化,而且跨平台,能支持后续扩展,性能也还说得过去,业务量不大时用着还行,直到现在大部分业务也还在用。
近几年,rocketmq 的呼声更高。它除了支持更多场景,像有序、事务、流计算都能直接支持,性能方面号称每秒能处理几十万消息量,在响应延迟方面做了很多优化,大多在毫秒级别。要是做电商,对响应时效有要求,可以考虑 rocketmq 。不过它是用 java 写的,对其他语言兼容性不太好,如果是 php 或者 c#程序员,就不建议选了。
kafka 是异步发送和接收消息的,性能比 rocketmq 和 rabbitmq 都好,号称理论上每秒能处理千万级消息量。所以在大数据、流计算领域,像数据采集等,几乎都用它。但它有个缺点,就是有时延。
总结一下,如果是互联网电商平台,业务量大、对低时延有要求,建议选 rocketmq ;如果要处理大批量数据同步、离线计算,建议选 kafka ;一般场景下考虑兼容性、集成便利性,建议选 rabbitmq 。
好了,今天的分享就到这里,要是对内容有疑问,欢迎留言交流。