否定确认
AMQP 0-9-1中的消费者可以选择使用手动确认交付。AMQP 0-9-1规范定义了basic.reject方法,该方法允许客户拒绝单个传递的消息,指示代理丢弃它们或重新排队。遗憾的是,basic.reject不支持批量负面确认消息。
为了解决这个问题,RabbitMQ支持basic.nack方法,该方法提供basic.reject的所有功能,同时还允许批量处理消息。要批量拒绝消息,客户端会将basic.nack方法的multiple标志设置为true。
然后,代理将拒绝所有未确认的,已传递的消息,包括basic.nack方法的delivery_tag字段中指定的消息。
在这方面,basic.nack补充了basic.ack的批量确认语义。
当消息被重新加入队列时,如果可能的话,它将被放置在其队列中的原始位置。
如果不是(由于当多个消费者共享队列时同时传递和来自其他消费者的确认),该消息将被重新加入队列到更靠近队列头的位置。