1. 程式人生 > >RocketMQ廣播消費與叢集消費

RocketMQ廣播消費與叢集消費

之前的部落格只是為了驗證rmq安裝是否成功,以及生產消費訊息能否正常走通,如果是多個消費端消費生產者傳送的訊息會有什麼樣的效果?這個可以用程式碼校驗一下,還是先了解兩個比較常用的消費端的術語:
1.叢集消費方式
一個ConsumerGroup中的Consumer例項平均分攤消費生產者傳送的訊息。例如某個Topic有九條訊息,其中一個Consumer Group有三個例項(可能是3個程序,或者3臺機器),那麼每個例項只消費其中的3條訊息,Consumer不指定消費方式的話預設是叢集消費的,適用於大部分訊息的業務
2.廣播消費方式
一條訊息被多個Consumer消費,幾十這些Consumer屬於同一個ConsumerGroup,訊息也會被ConsumerGroup中的每個Consumer消費一次,廣播消費中的ConsumerGroup概念可以認為在訊息劃分層面沒有意義,適用於一些分發訊息的場景,比如我訂單下單成功了,需要通知財務系統,客服系統等等這種分發的場景,可以通過修改Consumer中的MessageModel來設定消費方式為廣播消費

預設叢集消費方式

生產者迴圈生產訊息,假設生產20條,啟動兩個消費者,理論上是分攤消費的
生產者
編寫兩個消費者,啟動消費者
消費者
消費者
發現每個消費者消費了十條資料。

修改消費方式,廣播消費測試

廣播
啟動兩個消費者,理論上是各自消費二十條資料
消費
每個消費者消費了20條訊息,通過日誌還可以發現,消費端的消費方式是多執行緒消費的,進入原始碼檢視
原始碼
內部定義了很多預設值,包括消費方式預設叢集,執行緒最小預設20,最大預設64,批量下去訊息預設32,消費預設一次消費一條等一些預設資訊