Hello Java

rabbitmq实现ack-消息应答

2019-01-17  本文已影响12人  Aldeo

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

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

上一篇下一篇

猜你喜欢

热点阅读