RabbitMQ重试机制与死信队列触发的条件

RabbitMQ重试机制触发的条件:

1. 消费者程序出现异常

 例如:
  throw new RuntimeException("测试重试消息");    
  此时mq会根据配置文件设定的重试策略进行重试。

2. 手动告诉mq签收失败

 例如:
 channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
 此时消费者告诉mq消费失败,并将该消息重新放回队列等待下次消费,如果消费者是单台时会出现死循环。
 (从 api 的说明来看,这个就是循环消费和重试机制无关,但测试发现,开启重试策略,同样的消息再次投递到消费者的频率明显比关闭重试高很多,所以将这种情况也归纳为RabbitMQ重试机制触发的条件)

同时绑定死信队列和开始重试机制

1. 消费者程序出现异常
消费队列会进行重试直到达到重试次数为止,但是消息不会进入到死信队列进行消费。
2. 手动告诉mq签收失败

   2.1 当channel.basicNack 第三个参数设为true时,消息签收失败会继续进入消息队列等待消费
   2.2 当channel.basicNack 第三个参数设为false时,消息签收失败,此时消息进入死信队列,完成消费

正常队列消费者:
在这里插入图片描述
死信队列消费者:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值