rocketMQ是阿里開源產品,後捐獻給了apache成爲旗下產品。
rocketMQ是根據amqp協議採用java語言編寫的成熟企業級消息產品。
This diagram shows the flow of messages through the AMQ model server:
路由規則:從exchange路由到messageQueue的邏輯:
The Direct Exchange Type:直連模式,精確匹配routing key;
The Fanout Exchange Type:廣播模式;
The Topic Exchange Type:Topic模式,採用"*" 和 "#" 進行匹配;
The Headers Exchange Type:額。。。。
rocketMQ 分爲四大部分:
producer集羣/consumer集羣/brocker集羣/nameserver集羣
一張特別經典的圖片:
brocker 集羣 採用主從協議:
- producer只鏈接master,master同步到slave(同步或異步方式);
- consumer鏈接master和slave,主要在master讀取消息,master宕機或者繁忙到slave讀取消息;
- namesvr用於保證brocker的集羣關係,狀態等。
MQ可以支持把消息持久化:
- 持久化的方式爲保存文件,文件叫做commitlog(另外維護了一個consumerQueue相當於索引,一個indexfile,用於tt哦那個過key和其他時間查詢條件查詢);
- 持久化分爲兩種方式,同步刷盤和異步刷盤。
死信隊列:
MQ支持消費者重試,重試配置默認爲16次,當16次重試結束後,消息會存放到一個死信隊列中,死信隊列用於存放groupId 級別的消息,會存放三天的消息;
待續。。。