- 生产者在投递消息时,开启消息确认机制,确保成功投递到MQ服务器
- 消费者在消费消息时,开启手动ACK机制,确保成功通知MQ服务器删除消息
- MQ服务器开启消息持久化机制,保证
原因
为什么会产生消息的顺序的问题呢?
因为在同一个消息队列中,耦合了不同的业务代码,各个业务之间又存在先后循序关系,所以需要保证消息过来同样需要保证按顺序的消费。
解决办法
把消息放到同一个消息队列中,然后在代码层保证业务按照业务逻辑顺序进行消费,然后手动ack,否则不通知MQ删除消息。
- 定义一个消息队列
- 定义一个死信队列
- 给消息队列设置过期时间
- 声明当前队列绑定的死信队列
- 给死信队列设置监听消费者消费消息(不要部署跟普通消费者在同一个服务器中)
- 定义一个消息队列
- 定义一个死信队列
- 不给队列设置监听消费者 来消费消息
- 给消息队列设置过期时间
- 声明当前队列绑定的死信队列
- 给死信队列设置监听消费者消费消息
给消息设置messageId然后使用分布式锁进行控制
如何保证消息的分布式事务- 保证投递消息时的消息确认。
- 保证消费者的消费时的手动确认(ack)
- 消息中间件的持久化



