RocketMQ知識盤點【壹】_Producer和NameServer

儘量少囉嗦。

1.部署組成

 

由圖可知,rocketMq的運轉至少需要4個組成部分:Producer(生產者),NameService(路由中心),Broker(消息服務費)和Consumer(消費者)。

下面依次總結。

 

2.Producer

2.1 消息發送方式

同步:producer發送消息後,等待broker返回發送結果。

異步:producer發送消息時,指定回調函數,發送消息後直接返回。後面實際發送結果,由broker通知回調函數,producer在另一個線程種異步處理。

單向:producer發送消息後,不關心發送結果直接返回。

2.2 消息發送

對於DefaultMQProducer消息發送者,默認發送消息超時時間是3s(sendMsgTimeout),發送失敗重試次數是2次(retryTimesWhenSendFailed/retryTimesWhenSendAsyncFailed),消息最大長度是4M(maxMessageSize)。

消息發送失敗時,重試有broker隔離機制。即將該broker的所有messageQueue都隔離,默認30s。也就是說30s內不向這些messageQueue發送消息。

sendLatencyFaultEnable=true啓用。

2.3 批量發送

支持同一個topic的多條消息打包發送,但發送消息總長度不得超過maxMessageSize。

 

3.NameServer

Broker啓動時會向所有NameServer註冊,Producer在發送消息之前會從NameServer拿到Broker地址列表,然後根據負載均衡算法得出其中一臺Broker併發送消息。因此,每臺NameServer和每臺Broker都是長鏈接。

Broker每隔30s向所有的NameServer發送心跳,NameServer接到後會更新lastUpdateTimeStamp,然後NameServer每隔10s掃描brokerLiveTable裏的各Broker的lastUpdateTimeStamp,發現少於120s沒有心跳的,則移除該Broker並關閉Socket連接。

 

RocketMQ知識盤點【壹】_Producer和NameServer

RocketMQ知識盤點【貳】_Broker和消息存儲

RocketMQ知識盤點【叄】_Consumer

RocketMQ知識盤點【肆】_最佳實踐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章