问答详情
源自:3-4 RabbitMQ整合SpringBoot2-消息可靠性投递-实现方案落地代码详解-3

关于消息投递确认方面的问题

如果路由失败 触发returnCallBack这个方法(replyCode=312) 使得confirm的ack为true 也就是并没有发送到服务器 但是返回ack=true,这种情况怎么解决呢

提问者:杨mo 2019-01-13 22:38

个回答

  • 慕娘8336713
    2019-07-29 18:10:06

    confirm是生产者将消息发送到交换机后的回调,ack是true,说明消息已经成功发送到交换机了;
    returnCallBack是交换机路由到队列的回调,所以路由失败跟ack没关系;
    解决方案:
    路由失败的时候,把当前消息保存下来(自己随意,不丢就行),然后再针对这部分消息做补偿;