RabbitMQ的响应问题
public class RabbitMqMessageSender implements MessageSender, RabbitTemplate.ReturnCallback, RabbitTemplate.ConfirmCallback
其中
RabbitTemplate.ConfirmCallback
如果消息没有到exchange,则confirm回调,ack=false
如果消息到达exchange,则confirm回调,ack=true
RabbitTemplate.ReturnCallback
exchange到queue成功,则不回调return
exchange到queue失败,则回调return(需设置mandatory=true,否则不回回调,消息就丢了)
对于消费端的回调:
消费成功:
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
消费失败:
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);//不批量、队列不重发
channel返回的ACK是返回给队列,如果失败,并传参决定是否重传