目前業務上需要選用合適的消息隊列來做數據傳輸,因此特意調研了一下當下較主流的消息隊列的各特點:
消息中間件三要素:生產者、消息、消費者。
衡量標准:生產者、消息、消費者三者的交互。
1.消息路由:消息如何經過消息中間件到達消費者。
2.消息可靠性:
2.1.不允許消息丟失
2.2.允許消息丟失,性能需求大於可靠性
3.消息重放:已經消費過的消息是否能設置某一時間間隔后重新被消費(適用於新系統導入舊數據,防數據丟失)
4.消息堆積:流量高峰期時,消息中間件在高並發投遞消息時可能會出現問題,所以把消息暫存在中間件,等流量高峰過去,再投給下游業務
5.消息優先級:
5.1.消息投遞順序和消費順序一致
5.2.可設置某些消息的消費優先級
6.性能和擴展
6.1.性能:主要指tps、qps以及並發連接數
6.2.擴展:通過添加消費者來提高消費速率、消息中間件的容量上限
鑒於目前我們業務是做數據傳輸,主要是需要保證數據的完整性,綜合比較,選擇了RabbitMQ。
發現在rocketMQ的官方文檔上有一個比較圖: