RabbitMQ
RabbitMQ 一個比較有特色的功能是支持非常靈活的路由配置,和其他消息隊列不同的是,它在生產者(Producer)和隊列(Queue)之間增加了一個 Exchange 模塊,你可以理解為交換機。
問題
- RabbitMQ對消息堆積的支持并不好,在它的設計理念里面,消息隊列是一個管道,大量的消息積壓是一種不正常的情況,應當盡量去避免。當大量消息積壓的時候,會導致RabbitMQ 的性能急劇下降。
- RabbitMQ 的性能是我們介紹的這幾個消息隊列中最差的
RocketMQ
響應時延低,消息處理快
Kafka
Kafka 與周邊生態系統的兼容性是最好的沒有之一,尤其在大數據和流計算領域,幾乎所有的相關開源軟件系統都會優先支持 Kafka。
它的同步收發消息的響應時延比較高,因為當客戶端發送一條消息的時候,Kafka 并不會立即發送出去,而是要等一會兒攢一批再發送,在它的 Broker 中,很多地方都會使用這種“先攢一波再一起處理”的設計。當你的業務場景中,每秒鐘消息數量沒有那么多的時候,Kafka 的時延反而會比較高。所以,Kafka 不太適合在線業務場景。