RabbitMQ使用过程中遇见的问题
作者:互联网
怎么保证消息不被重复消费?
解决思路:保证消息的唯一性
写入消息队列的数据做唯一标识,
消费消息时,根据唯一标识判断是否消费过。若第二次消费消息,则直接丢弃。
项目中实现:
1. 生产者投递消息时每个消息都包含一个全局唯一ID来标识每条消息
2. 建立一张消息日志表,记录消息的id和执行状态,在消息id上加唯一索引。
3. 消费的时候,先往消息日志表插入记录,如果插入失败报错duplicate key,那说明消息已经消费过,就不用再消费了,这就保证了幂等性。
4. 这个方案的关键点在于你要保证消息的id是全局唯一,这就涉及到各种技术方案了,比如snowflake、UUID等。
如何保证消息的正确发送rabbitmq
解决思路:
发送方确认模式:
将 信息通道 设置成confirm模式(发送方确认模式),消息包含唯一ID
接收方确认机制:
标签:消费,RabbitMQ,唯一,标识,保证,消息,遇见,过程,id 来源: https://www.cnblogs.com/Life-QX/p/16476713.html