延迟消息,进行二次确认,回调检查的相关问题

来源:3-3 消息如何保障 100% 的投递成功方案-2

qq_哈之仆_0

2018-08-31

如下图,讨论的场景基于方案二

http://img.mukewang.com/szimg/5b8907ce0001705810020527.jpg

第一个问题,Step 4 完成后,是不是也需要在发送一个延迟确认消息(参考Step 2),来保障消息可靠到达。还是单独依赖 ConfirmListener 和 ReturnListener 来重试,超过重试次数,怎样处理,是向 MSG DB 插入失败消息记录还是其他。

第二个问题,Step 2 发送的延迟确认消息假如在经历最大重试次数后,任然没有发送成功,是不是应该向 MSG DB 中插入一条失败的消息记录,还是做其他处理。

写回答

2回答

ImoocZhang

2018-08-31

2次投递就是利用延长插件去做的,可以中间'设置一个短暂的时间间隔,当然如果有必要也要做confirm,只不过不存储和更新消息记录表了,少了一次持久化,提升性能,做一个优化。

0
6
qq_哈之仆_0
非常感谢!
2018-08-31
共6条回复

qq_哈之仆_0

提问者

2018-08-31

第一个问题: 消息发送的操作进行封装,每次调用Api,底层做延迟消息二次发送处理。

第二个问题: 延迟消息超过重试次数大概率是业务链路出现了问题,进行链路追踪,手动补偿。日记记录,数据库不记录失败的消息

1
1
阿神
已解决
2018-08-31
共1条回复

RabbitMQ精讲 从0到1驾驭RabbitMQ应用与设计

从0到1,全面深入掌握RabbitMQ消息中间件技术

1460 学习 · 443 问题

查看课程