RabbitMQ 消费者确认auto 和 manual 模式对异常的处理区别(含重试、requeue的影响)

本文详细解析RabbitMQ消费者确认模式,包括auto自动确认和manual人工确认,以及default-requeue-rejected属性的影响。在异常处理上,auto模式下异常会导致消息被拒绝并重入队列,manual模式需要手动确认或拒绝消息。default-requeue-rejected属性主要用于防止死循环,结合死信队列使用能有效管理异常消息。
摘要由CSDN通过智能技术生成

本文用于解答下述疑问:

消息在下面四个条件的处理方式:

  • 两种模式
  • 是否有异常、是否捕获异常
  • 是否设置重试
  • requeuetrue / false ( + default-requeue-rejected的影响)

看似是 2 4 种方案,让人头疼,但其实没那么复杂。总结中也会给出简洁的答案。

正文

本文环境: springboot 2.1.9.RELEASE + amqp-client-5.4.3.jar

本文内容都是 direct相关的配置,这里的direct不是指直连模式的那个,而是指springbbot配置中rabbitMQ的属性。
application.properties的配置

#注意用direct要声明
spring.rabbitmq.listener.type=direct
#是direct
spring.rabbitmq.listener.direct.xxxx
#而不是 spring.rabbitmq.listener.simple.xxxx

不了解两者区别的可以参考一下RabbitMQ传输原理、五种模式

本文所说的模式仅限于automanual两种,none不做讨论(毕竟就是"不管")

本文也不讨论这两种模式的优缺点,(auto时,源源不断地发送消息之类)


为简化讨论,"异常"只分两种: (这也是JVM处理的逻辑)

  • 没有异常 和 有异常捕获了,都视为没有异常
  • 有异常, 或者 捕获了异常再抛出、手动抛出,都视为有异常
    (补充:全局异常处理器无法生效,只看该方法内有没有抛出)

首先前置知识:

  • RabbitMQ对异

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值