rabbitmq实现ack-消息应答

1.yml配置


image.png

2.监听者
@RabbitListener(queues = "ack.test")
public void handleMessage5(String data,Channel channel, Message message) {
System.out.println("ack.test接收到的消息 : " + data);
try {
Thread.sleep(5000L);
// channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); // 消息的标识,false只确认当前一个消息收到,true确认所有consumer获得的消息
// channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); // ack返回false,并重新回到队列,api里面解释得很清楚
// channel.basicReject(message.getMessageProperties().getDeliveryTag(), true); // 拒绝消息
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); // ack返回false,并重新回到队列,api里面解释得很清楚
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

3.好处
消费者挂掉后,消息还可以再次消费


image.png

消费出现问题时,可以再次消费,或分发给别的消费者

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容