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));
        }
     });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值