RabbitMQ消息确认机制是为了保证消息不丢失,可靠抵达,可以使用事务消息,性能下降250倍,为此引入确认机制
• publisher confirmCallback 确认模式
• publisher returnCallback 未投递到 queue 退回模式
• consumer ack机制
一,发送端确认模式 confirmCallback;
1,开启发送端确认模式:• spring.rabbitmq.publisher-confirms=true 或者 在创建 connectionFactory 的时候设置 PublisherConfirms(true) 选项,开启 confirmcallback 。
2,自定义rabbitTemplate,如下图代码。
3,confirmCallback触发时机。• 消息只要被 broker 接收到就会执行 confirmCallback,如果是 集群模式模式,需要所有 broker 接收到才会调用 confirmCallback。 CorrelationData:用来表示当前消息唯一性,消费者可以取这个值判断是否重复消费。
•注意:被 broker 接收到只能表示 message 已经到达服务器,并不能保证消息一定会被投递 到目标 queue 里。所以需要