1.1 为什么使用批量消息
- 在很多调优的时候,比如数据库批量处理,有些请求进行合并发送等都是类似批量的实现
- RocketMQ批量发送也是为了追求性能,特别在消息数量特别大的时候,批量效果就非常明显
1.2 使用批量消息的限制
- 同一批次的消息应该具有相同主题、相同的消息配置
- 不支持延迟消息
- 建议一个批量消息大小最好不要超过1MB
2.1 什么是事务消息
RocketMQ的事务消息,是指Producer端消息发送事件和本地事务事件,同时成功/失败。
2.2 事务消息设计
2.3 事务消息的使用约束
-
事务消息不支持定时和批量
-
为了避免一个消息被多次检查,导致半数队列消息堆积
RocketMQ限制了单个消息的默认检查次数为15次
通过修改broker配置文件中的transactionCheckMax
参数进行调整
特定的时间段之后才检查事务
通过broker配置文件参数transactionTimeout或用户配置CHECK_ IMMUNITY_ TIME_ IN_ SECONDS
调整时间
- 一个事务消息可能被检查或消费多次
- 提交过的消息重新放到用户目标主题可能会失败
- 事务消息的生产者ID不能与其他类型消息的生产者ID共享
2.4 事务消息的状态
- TransactionStatus.CommitTransaction
提交事务,允许消费者消费这个消息 - TransactionStatus. RollbackTransaction
回滚事务,消息将会被删除或不再允许消费 - Transaction Status.Unknown
中间状态,MQ需要重新检查来确定状态