怎么解决异步通知重发和没发的问题呢

来源: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三种实现方式


0
0

实战支付+电商双系统 玩转Java技术栈

花一份课的价,收获:双系统实战+坐拥20K+粉的师兄指导,值~

2046 学习 · 1048 问题

查看课程