RocketMq参数配置之拉取模式消息数量的设置

        使用Push模式拉取消息时,可以设置拉取线程每次从broker拉取的消息量(pullBatchSize),同时也可以设置消费线程每次消费的最大消息的数量,即:consumeMessageBatchMaxSize。但是有时候,设置的值跟预期读取的消息的数量不一致,例如:

consumer.setPullBatchSize(50);
consumer.setConsumeMessageBatchMaxSize(50);

期望线程每次从broker拉取到50条消息,同时消费线程每次消费 50 条消息,但是实际发现,最大只拉取到了32条消息,消费也只消费了32条消息。

       首先,pullBatchSize的大小受制于broker配置文件中 maxTransferCountOnMessageInMemory 参数的设置,该参数默认设置为 32,也即是每次从服务端拉取的最大的数量不能超过32,因此即使设置 pullBatchSize超过32,最后也只返回32。因此,若要每次拉取的消息量超过32,可以修改broker配置文件里该参数的值,并重启broker服务。

broker读取消息的判断是在:DefaultMessageStore.getMessage()方法中的,isTheBatchFull 判断中的

        其次,每个消费线程消费批次消费的消息数量,consumeMessageBatchMaxSize 也跟pullBatchSize相关,消费线程实际上每次消费的消息数量不会大于 pullBatchSize,具体可以查看ConsumeMessageConcurrentlyService.submitConsumeRequest(),消费任务的提交。

因此,实际上 consumeMessageBatchMaxSize  <= pullBatchSize <= maxTransferCountOnMessageInMemory 。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值