RocketMQ(22) -- RocketMQ应用 -- 批量消费消息

本文介绍了RocketMQ的批量消息处理,包括批量发送消息的限制、大小调整和生产者发送消息的结构。同时,详细阐述了批量消费消息的设置、可能的问题以及如何通过代码实现案例来避免发送消息超出限制。

分布式消息队列RocketMQ

四、 RocketMQ应用

4.5)批量消息

4.5.1)批量发送消息

4.5.1.1)发送限制

生产者进行消息发送时可以一次发送多条消息,这可以大大提升Producer的发送效率,不过需要注意以下几点:

  1. 批量发送的消息必须具有相同的Topic

  2. 批量发送的消息必须具有相同的刷盘策略

  3. 批量发送的消息不能是延时消息与事务消息

4.5.1.2)批量发送大小

默认情况下,一批发送的消息总大小不能超过4MB字节;如果想超出该值,有两种解决方案:

  1. 将批量消息进行拆分,拆分为若干不大于4M的消息集合分多次批量发送

  2. 在Producer端与Broker端修改属性

Producer端需要在发送之前设置Producer的maxMessageSize属性

Broker端需要修改其加载的配置文件中的maxMessageSize属性

4.5.1.3)生产者发送的消息大小

Producer发送消息Message的结构如下图:

 生产者通过send()方法发送的Message,并不是直接将Message序列化后发送到网络上的,而是通过这个Message生成了一个字符串发送出去的;

这个字符串由四部分构成:Topic、消息Body、消息日志 (占20字节)及用于描述消息的一堆属性key-value;这些属性中包含例如生产者地址、生产时间、 要发送的QueueId等;

最终写入到Broker中消息单元中的数据都是来自于这些属性。

4.5.2)批量消费消息

4.5.2.1)修改批量属性

 Consumer的MessageListenerConcurrently监听接口的consumeMessage()方法的第一个参数为消息列表,但默认情况下每次只能消费一条消息,若要使其一次可以消费多条消息,则可以通过修改 Consumer的consumeMessageBatchMaxSize属性来指定,不过,该值不能超过32。

因为默认情况下消费者每次可以拉取的消息多是32条,若要修改一次拉取的大值,则可通过修改Consumer的 pullBatchSize属性来指定。

4.5.2.2)存在的问题

Consumer的pullBatchSize属性与consumeMessageBatchMaxSize属性是否设置的越大越好?

——》当然不是

pullBatchSize值设置的越大,Consumer每拉取一次需要的时间就会越长,且在网络上传输出现问题的可能性就越高;若在拉取过程中若出现了问题,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值