RocketMQ 幂等性 (消息重复处理)

RocketMQ 无法避免消息重复,所以如果业务对消费重复非常敏感,务必

要在业务局面去重,有以下几种去重方式

1. 将消息的唯一键,可以是 msgId,也可以是消息内容中的唯一标识字段,例如订单 Id 等,消费前判断是否在

Db Tair(全局 KV 存储)中存在,如果不存在则插入,幵消费,否则跳过。(实际过程要考虑原子性问题,判断

是否存在可以尝试插入,如果报主键冲突,则插入失败,直接跳过)

msgId 一定是全局唯一标识符,但是可能会存在同样的消息有两个不同 msgId 的情况(有多种原因),返种情况可能会使业务上重复消费,建议最好使用消息内容中的唯一标识字段去重。

2. 使用业务局面的状态机去重

你可能感兴趣的:(RocketMQ,java-rocketmq,rocketmq)