我是靠谱客的博主 糟糕画板,最近开发中收集的这篇文章主要介绍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指定一批消息只会被一个线程处理,且在处理过程中只要有一个消息处理异常,则这批消息需要全部从新再次消费处理

最后

以上就是糟糕画板为你收集整理的RocketMQ-批量消息的全部内容,希望文章能够帮你解决RocketMQ-批量消息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部