RocketMQ-批量消息

前言

生产者进行消息发送的时候可以一次性发送多条消息,那么这样可以大大节省网络IO,也可以大大提升Producer的发送效率!

注意

  • 批量消息必须使用相同的Topic
  • 批量消息必须使用相同的刷盘策略
  • 批量消息不能是延迟消息和事务消息
  • 批量消息不能4MB

消息大小限制

批量消息不能支持超过4MB大小,解决方案有如下两种
方案一
如果超过4MB,那么将消息切片即可

方案二
修改生产端与Broker的配置

  • 生产端在发送之前设置maxMessageSize属性
  • Broker端修改配置文件中的maxMessageSize
    上面说到的都是生产者,那么对于消费者也是有一定要求的!

批量消费消息

Consumer的MessageListenerConcurrently监听接口的ConsumerMessage方法的第一个参数为消息列表,但默认情况下每次只能消费一条消息,若要使一次可以消费多条消息,则可以通过Consumer的consumerMessageBatchMaxSize属性来指定,不过这个值不能超过32,因为默认情况下消费者最多是32条,拖要修改最大拉取值,则可以通过修改Consumer的pullBatchSize属性来指定

存在问题
Consumer的pullBasicSize属性与consumerMessageBatchMaxSize属性是否设置越大越好呢?当然不是的!

  • pullBatchSize值设置越大,Consumer没拉取一次需要的时间会越长,且在网络上传输出现问题的可能性越高,若在拉取过程中出现了问题,那么本批次的所有消息都需要全部从新拉取。
  • consumerMessageBatchMaxSize值设置越大,consumer的消费并发消费能力越低,且这批消费的消息具有相同的消费结果,因为consumerMEssageBatchMaxSize指定一批消息只会被一个线程处理,且在处理过程中只要有一个消息处理异常,则这批消息需要全部从新再次消费处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员劝退师-TAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值