栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RocketMQ-批量消息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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指定一批消息只会被一个线程处理,且在处理过程中只要有一个消息处理异常,则这批消息需要全部从新再次消费处理
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678091.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号