RocketMQ消費批拉超過32不生效

2022-03-18 09:34:59 字數 1497 閱讀 6815

由於一些原因,我需要rocketmq消費的時候,一批拉400條,一批處理400條。設定如下:

為了簡單驗證是否正確,消費如下:

直接通過列印msgs.size()觀察情況即可。

實驗的topic裡面的訊息數量很多很多,但是啟動消費端,消費端的日誌如下:

奇怪啦,明明已經進行了修改

為什麼還是每次只能消費32條呢?

通過跟蹤consumer**:

這裡的確已經設定為400了,那麼我們需要跟蹤到broker服務端進行檢視了。

broker接受到的也是400,我們只有繼續跟蹤

因為返回為true導致下面的if判斷成立,for迴圈就break了,所有只取了32條資料返回到consumer了:

如果需要讓可以一次拉取400條,需要修改broker這裡的資料配置才可(其實關於一條訊息大小也是類似的,雖然說最大設定16m,但是也是和這裡同理需要設定broker相關的資料配置才可生效)。

修改broker的配置檔案,新增:maxtransfercountonmessageinmemory=400 重啟broker即可,效果如下:

效果正常,其實如果訊息過大,還需要考慮下面幾個引數:

需要rocketmq消費的時候,一批拉400條,一批處理400條。設定如下:

還是達不到效果的,還需要設定broker相關的引數,本次裡面設定broker的maxtransfercountonmessageinmemory=400即可,其他情況需要考慮如下等引數。

,或者公號回覆「rocketmq」獲取原始碼位址。

rocketmq 順序消費

org.apache.rocketmq rocketmq spring boot starter 2.0.3 有序訊息需要生產者,消費者一起配合,生產者要保證每次訊息都要投遞到broker的同乙個佇列裡,消費者需要設定 關鍵點 生產這傳送 同步訊息且指定佇列 syncsendorderly 消費者指...

RocketMQ 訊息消費

訊息消費 難點 如何保證訊息只消費一次?順序消費?消費模式 1 單一消費模式 一條訊息,僅被乙個消費者進行消費。如何進行負載?負載演算法有 a 平均分配。b 平均輪詢分配。c 一致性hash 不推薦 d 根據配置,為消費者指定訊息佇列。e 根據broker進行分配,消費者固定消費指定的broker。...

rocketmq實現順序消費

訊息有序指的是可以按照訊息的傳送順序來消費。rocketmq可以嚴格的保證訊息有序。但這個順序,不是全域性順序,只是分割槽 queue 順序。要全域性順序只能乙個分割槽。之所以出現你這個場景看起來不是順序的,是因為傳送訊息的時候,訊息傳送預設是會採用輪詢的方式傳送到不通的queue 分割槽 如圖 而...