幂等性
消费者消费多条相同的消息,每次结果都应当与第一次的相同
消费者使用乐观锁机制,版本号
-
生产者的消息是
uid=10086,money=100,version=1
-
如果多次投递到消费者,消息可能重复消费,消费者使用数据库的乐观锁机制
-
update sys_user set money = money - 100, version = version + 1 where uid = 10086 and version = 1
-
n = 1
```
- 因为多个消息过来的都 version = 1,当第一次消费以后,数据库的数据就变成了 version = 2,第二次执行该 sql 由于 where 条件 version = 1导致执行的行数为 0 ,就实现了幂等性保障