rocketMq-producer介紹

系列

rocketMq概念介紹

rocketMq-namesrv介紹

rocketMq-Topic創(chuàng)建過程

rocketMq-producer介紹

rocketMq-consumer介紹

rocketMq - rebalance介紹

rocketMq - 并發(fā)消費過程

rocketMq - 串行消費過程

rocketMq-broker介紹

rocketMq-broker消息存儲介紹

rocketMq - commitLog

rocketMq - index介紹

rocketMq-延遲消息介紹

rocketMq-事務消息介紹

rocketMq消息查詢

rocketMq和kafka的架構區(qū)別

rocketMq - master/slave同步


producer介紹

producer在rocketMq扮演的角色是消息的發(fā)送過程,其實宏觀上來講其實就包括兩大塊,分別是消息的發(fā)送以及一堆定時任務。

producer在發(fā)送消息過程中涉及到發(fā)送隊列的選擇(topic、broker、queue),所以只要在整個發(fā)送過程中理清楚這幾者之間的關系,就能理解整個發(fā)送過程,當然其中包括 非嚴格順序消息、順序消息、事務消息。這里只講非順序消息、順序消息,不包括事務消息。

producer的發(fā)送過程


rocketMq發(fā)送時序圖


rocketMq發(fā)送消息活動圖
rocketMq發(fā)送消息過程

說明:

? ? 核心邏輯參見DefaultMQProducerImpl類

????rocketMq發(fā)送消息過程由以下組成:組裝消息&獲取topicPubInfo&選擇隊列&發(fā)送消息。

? ? 組裝消息:發(fā)送消息的組裝,包括設置topic&tag&延時&是否有序等等。

? ? 生成topicPublishInfo:定期或按需從namesrv同步該topic的broker信息

? ? 選擇隊列:從topicPubishInfo中按照輪詢(roundrobin)選取隊列,i++%(隊列長度),順序消息根據自定義的selector按照固定的key進行hash選擇同一個隊列

? ? 發(fā)送消息:同步/異常方式發(fā)現(xiàn)on個消息給broker


生成TopicPublishInfo過程

TopicPublishInfo生成邏輯
TopicPublishInfo生成代碼

說明:

? ? 參見MQClientInstance類

? ? 圖片備注中已經寫明了MessageQueue的生成過程


SelectOneMessageQueue過程

選擇MessageQueue邏輯


選擇MessageQueue邏輯


producer的定時任務

producer的定時任務

說明:

? ? 關鍵是前3個定時任務,后面兩個一般是consumer端會使用,這個類是公用的。


producer的初始化過程

producer初始化過程I
producer初始化過程II

說明:

????參見DefaultMQProducerImpl類,具體的功能在上圖中已備注。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容