- 如果消息未进行ack操作,即忘了ack,那么该消息消费完之后,消息的状态为unacked,该消息也不能被其他消费者所消费;如果重启consumer,该消息将重新被消费。
- 如果消息进行nack操作,即如下,将第三个参数
requeue设置为true,此时消息将重新回到队列,mq将轮训其他的消费者。
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
本文探讨了消息队列中消息的状态变化与消费机制。详细解释了消息未进行ack操作时的状态为unacked,不能被其他消费者消费,重启consumer后会重新消费;以及消息进行nack操作时,设置requeue为true,消息将回到队列,由其他消费者轮训消费。
requeue设置为true,此时消息将重新回到队列,mq将轮训其他的消费者。channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
4879
862
1123
377

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