springboot + rabbitmq 消费者消息确认 (Ack)
开启消息确认
spring.rabbitmq.listener.direct.acknowledge-mode=manual
spring.rabbitmq.listener.simple.acknowledge-mode=manual
消费者
@Component
public class RabbitMqComponent7 {
@RabbitListener(queues = "queueAck")
public void listerQueueR1(Channel channel,String message,@Header(AmqpHeaders.DELIVERY_TAG) long tag) throws IOException {
System.out.print(message);
channel.basicAck(tag,false);
}
}
channel.basicAck(deliveryTag, false);
deliveryTag:该消息的index
multiple:是否批量.true:将一次性ack所有小于deliveryTag的消息。
channel.basicNack(deliveryTag, false, true);
deliveryTag:该消息的index
multiple:是否批量.true:将一次性拒绝所有小于deliveryTag的消息。
requeue:被拒绝的是否重新入队列
channel.basicReject(deliveryTag:, false);
deliveryTag:该消息的index
requeue:被拒绝的是否重新入队列
------------------------------------------------------
basicAck:成功消费,消息从队列中删除
basicNack:requeue=true,消息重新进入队列,false被删除
basicReject:等同于basicNack
basicRecover:消息重入队列,requeue=true,发送给新的consumer,false发送给相同的consumer
本文介绍如何在SpringBoot项目中配置RabbitMQ消费者进行手动消息确认(Ack)。通过设置spring.rabbitmq.listener.*.acknowledge-mode为manual,消费者可以使用channel.basicAck、channel.basicNack和channel.basicReject来确认、批量确认或拒绝消息。
50万+

被折叠的 条评论
为什么被折叠?



