Rocketmq源码分析: Rocketmq push 模式下 consumeMessageBatchMaxSize 和 pullBatchSize 两个参数的意义

5 篇文章 0 订阅
3 篇文章 0 订阅

目的:  本篇文章主要是聊聊consumeMessageBatchMaxSize 和 pullBatchSize 两个参数在Rocketmq push模式的意义

 

  1.  首先第一次看到consumeMessageBatchMaxSize 和 pullBatchSize 两个参数的时候感觉有点模糊,很容易造成混淆,如果我们想把每个参数在生产环境中都设置的合理,最好还是把每个参数的实际意义搞清楚。
  2.  首先我们找到这两个参数所在类 rocketmq/client/src/main/java/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java 

            

            consumeMessageBatchMaxSize 就像注释表述的一样,批量消费的大小,也就是说当MQ消息从Broker拉取之后每次派发给我们每个消费类的大小,也许看到下图大家更容易理解些。

          

          看到这里可能大家已经知道了consumeMessageBatchMaxSize 和我们消费类相关参数的对应关系,然后我们再继续看看consumeMessageBatchMaxSize 在Rocketmq 源码里具体的使用地方

         代码地址: org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService  ,具体代码接入如下:

         当从broker拉取的msgs的大小超过consumeMessageBatchMaxSize 的大小时,将会对消息进行拆分,然后提交到线程池进行处理,从这里我们也不难看到这个参数的意义,值越小越能更大化的利用多线程去执行。

         该参数默认值是1: 最大值是1024,这个具体设置多少会比较合适?这个还需要根据自己的业务来定,假如我们每个消息的处理耗时很长,那么这个参数就应该设置的偏小一点,不要让单个消息的消费慢影响同一批中的其他消息。

         

 

  1. pullBatchSize:   回头我们再看看pullBatchSize 这个参数,这个参数代表每批次从broker拉取消息的最大个数,默认值是32.   代码如下:
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RocketMQpush模式是指服务端主动将消息推送给消费者客户端。在RocketMQ中,对于每个指定的topic,默认的队列数量是4个。当producer发送消息到topic时,会随机选择一个队列来投递消息,队列序号是0~3。\[2\] 推送的实现方式有两种,一种是采用回调的形式,服务端有事件源后,启动一个线程,遍历所有客户端列表,依次调用其钩子函数。这种方式需要服务端缓存所有客户端列表,并且每次事件源发布都需要调用一次,对资源的浪费较大。另一种方式是利用长轮询的拉来模拟推,实现类似于推的效果。RocketMQ采用的就是这种方式。\[3\] 在push模式下,RocketMQ源码实现涉及到消息的投递、消费者的注册和消息的推送等过程。具体的源码分析需要深入研究RocketMQ源码。 #### 引用[.reference_title] - *1* *3* [RocketMQ 消费端PUSH 模式详解](https://blog.csdn.net/bingfengxiyang703/article/details/103904900)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [RocketMq 消费消息的两种方式 pullpush](https://blog.csdn.net/zhangcongyi420/article/details/90548393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值