在消息延迟投递,二次确认,回调检查的方案下的问题

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

qq_哈之仆_0

2018-08-28

1. 首先确认下,该方案消息是不做手动 Ack 的,消费端是通过,向 CallBack 发送消息来确定是否消费成功

2. 生产者发送业务消息和延迟消息是不是不需要做 ConfirmListener 与 ReturnListener。

假想场景,生产者发送业务消息到 Broker 失败,延迟消息发送成功,ConfirmLisener 监听,业务消息进行重发。CallBack 收到延迟消息后会调用 RPC 进行重试补偿,这样看来,ConfirmListener 中进行的重发是不是多余的。(明确消费端会做幂等处理)

在上面假想的基础上,延迟消息应该要做 ConfirmListener,不然延迟消息发送失败,不重发,CallBack 就无法进行重试了。

3. 最后问一下老师,生成者发送的延迟消息,是程序进行延时发送,还是同时将一个消息发送到一个延时队列中。

写回答

1回答

阿神

2018-08-29


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

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

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

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

1460 学习 · 443 问题

查看课程