概述
前言
生产者进行消息发送的时候可以一次性发送多条消息,那么这样可以大大节省网络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指定一批消息只会被一个线程处理,且在处理过程中只要有一个消息处理异常,则这批消息需要全部从新再次消费处理
最后
以上就是糟糕画板为你收集整理的RocketMQ-批量消息的全部内容,希望文章能够帮你解决RocketMQ-批量消息所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复