RabbitMQ消息确认和renturn机制

1、消息确认机制(confirm)

为了确保消息能够准确的发送到Broker中,RabbitMQ提供了消息确认机制。
当生产者发送消息之后,如果Borker准确收到消息,则会返回给生产者一个应答。生产者通过接收到的应答判断消息是否成功发送。
在这里插入图片描述

confirm机制的实现

1、通过channel开启confirm机制
2、在channel上添加监听器接受broker返回的应答信息

//开启confirm机制
channel.confirmSelect();
//添加一个确认监听
 channel.addConfirmListener(new ConfirmListener() {
   @Override  //消息成功发送时执行
   public void handleAck(long deliveryTag, boolean multiple) throws IOException {
        log.info("消息成功发送");
    }
   @Override  //消息发送失败时执行
   public void handleNack(long deliveryTag, boolean multiple) throws IOException {
        log.info("消息发送失败");
   }
 });

2、return机制

return机制处理的是消息不能到达队列的情况,比如:路由没有指定的key。
生产者在发送消息之后,交换机通过指定的路由键来指定消息发送的队列,在某些情况下,消息发送到队列失败,这是需要监听不可达消息需要return机制来实现。

//添加return监听器
channel.addReturnListener(new ReturnListener() {
    @Override
    public void handleReturn(int replyCode, String replyText, String exchange,
                String routingKey, AMQP.BasicProperties properties,
                byte[] body) throws IOException {
         log.info("---------handle  return----------");
         log.info("响应码replyCode: {}", replyCode);
         log.info("文本信息replyText: {}", replyText);
         log.info("exchange:  {}", exchange);
         log.info("routingKey:  {}", routingKey);
         log.info("properties:  {}", properties);
         log.info("body:  {}" ,new String(body));
        }
     });
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页