怎么解决异步通知重发和没发的问题呢
来源:13-15 完成支付和订单对接

Packbacker
2021-10-18
写回答
1回答
-
张港华
2021-10-25
关于重复消费的一些建议:
每条消息在生产者这边给一个映射id,{"idxxx":"订单id"}
将这个映射存入redis或者mysql
消费者在拿到消息之后,判断一下,库里不存在的,直接略过,存在的,消费,消费完,从库里删掉。
关于消息丢失的一些建议:
生产者通过调用channel.confirmSelect方法将信道设置为confirm模式
一旦信道进入confirm模式,所有在该信道上面发布的消息都会被指派一个唯一的ID(从1开始)
一旦消息被投递到所有匹配的队列之后,RabbitMQ就会发送一个确认(Basic.Ack)给生产者(包含消息的唯一deliveryTag和multiple参数),这就使得生产者知晓消息已经正确到达了目的地了。
-----------------------------------割----------------------------------------
消息丢失建议是我复制粘贴的
如果真碰到消息丢失的场景,可以直接了解confirm三种实现方式
00
相似问题