【RabbitMQ的重试配置retry】重试配置不生效原因

在Spring Boot项目中,RabbitMQ的retry重试配置不生效可能由以下原因导致:

核心问题定位

retry:enabled: true  # ✅ 配置已开启max-attempts: 3 # ✅ 参数有效

但实际未触发重试,可能原因如下:


1. 容器类型不匹配

症状表现

配置参数虽然正确,但应用在SimpleMessageListenerContainer(对应配置路径spring.rabbitmq.listener.simple)时,若实际使用的是DirectMessageListenerContainer(对应路径spring.rabbitmq.listener.direct),配置将不生效

验证方式

检查应用日志启动时的容器初始化信息:

2023-07-20 14:30:01 [main] INFO  o.s.a.r.l.SimpleMessageListenerContainer - Container initialized for queues: [jpaas.itinerary.audit.queue]

2. 手动ACK模式下异常未被传播

关键代码逻辑

当使用手动确认模式时,必须确保异常能传递到容器层面:

public void itineraryAudit(String message, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) {try {// 业务处理processMessage(message);channel.basicAck(tag, false); // ✅ 正常确认} catch (Exception e) {// ❌ 错误示例:捕获异常但未抛出log.error("处理失败", e);// 必须抛出异常才能触发重试throw new AmqpRejectAndDontRequeueException(e); }
}
错误模式示例
try {// ...
} catch (Exception e) {channel.basicReject(tag, false); // ❌ 直接拒绝消息,绕过重试机制
}

3. 自定义RetryTemplate覆盖配置

配置冲突场景

若代码中通过@Bean自定义了RetryTemplate:

@Bean
public RetryTemplate myRetryTemplate() {return new RetryTemplate(); // ❌ 覆盖了yaml中的配置参数
}

将导致application.yml中的配置失效


4. 异常类型不可重试

重试策略规则

Spring Retry默认仅对以下异常进行重试:

retryPolicy.setRetryableThrowableTypes(Collections.singletonMap(RuntimeException.class, true));

若业务代码抛出IOException等checked异常,默认不会被重试

解决方案

在配置中显式指定可重试异常:

retry:retryable-exceptions: java.io.IOException: true

5. 死信队列配置干扰

特殊场景

当同时配置了死信队列(DLX)时,若出现以下配置:

@Queue(value = "audit.queue", arguments = {@Argument(name = "x-dead-letter-exchange", value = "dlx.exchange"),@Argument(name = "x-dead-letter-routing-key", value = "dlx.key")
})

当消息被拒绝时可能直接进入死信队列,而不会触发重试


排查工具包

步骤1:启用DEBUG日志
logging:level:org.springframework.retry: DEBUGorg.springframework.amqp.rabbit.retry: TRACE
步骤2:观察重试日志
2023-07-20 15:00:00 DEBUG o.s.retry.support.RetryTemplate - Retry: count=0
2023-07-20 15:00:02 DEBUG o.s.retry.support.RetryTemplate - Checking for rethrow: count=1
步骤3:验证容器配置
@Autowired
private RabbitListenerEndpointRegistry registry;public void checkContainerType() {registry.getListenerContainers().forEach(container -> {System.out.println("Container class: " + container.getClass().getName());});
}

最佳实践示例

spring:rabbitmq:listener:type: simple # 强制使用simple容器simple:retry:enabled: truemax-attempts: 3max-interval: 10000initial-interval: 2000multiplier: 2retryable-exceptions: java.lang.Exception: true # 允许所有异常重试

通过上述排查和调整,可确保RabbitMQ消息消费的重试机制按预期工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/895032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是将DeepSeek功能集成到WPS中的详细步骤,无需本地部署模型,直接通过官网连接使用:1. 下载并安装OfficeAI插件 (1)访问OfficeAI插件下载地址:OfficeAI助手 - 免费办公智能AI助手, AI写作,下载…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<7>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们一起来学习转移表,回调函数,qsort… 目录 一、转移表1.1 定义与原理1.3…

漏洞分析 Spring Framework路径遍历漏洞(CVE-2024-38816)

漏洞概述 VMware Spring Framework是美国威睿(VMware)公司的一套开源的Java、JavaEE应用程序框架。该框架可帮助开发人员构建高质量的应用。 近期,监测到Spring Framework在特定条件下,存在目录遍历漏洞(网宿评分&am…

笔记:理解借贷相等的公式

强烈推荐非会计人士,快速了解会计看这个系列的视频,其中比较烧脑的“借贷相等”公式,这个视频讲解的不错: 4.小白财务入门-借贷记账法_哔哩哔哩_bilibili 比如这里,钱在银行卡重,所以银行存款就是借方…

【Spring】什么是Spring?

什么是Spring? Spring是一个开源的轻量级框架,是为了简化企业级开发而设计的。我们通常讲的Spring一般指的是Spring Framework。Spring的核心是控制反转(IoC-Inversion of Control)和面向切面编程(AOP-Aspect-Oriented Programming)。这些功能使得开发者…

学习笔记:机器学习中的数学原理(一)

1. 集合 集合分为有限集和无限集; 对于有限集,两集合元素数相等即为等势; 对于无限集,两集合元素存在一一映射关系即为等势; 无限集根据是否与正整数集等势分为可数集和不可数集。 2. sigmoid函数(也叫…

【信息系统项目管理师-案例真题】2016下半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题1】4 分【问题2】12 分【问题3】3 分【问题4】6 分试题二【问题1】3 分【问题2】4 分【问题3】8 分【问题4】5 分【问题5】5 分试题三【问题1】4 分【问题2】8 分【问题3】5 分【问题4】8 分试题一…

基于javaweb的SpringBoothis智能医院管理系统(源码+文档+部署讲解)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 运行环境开发工具适用功能说明一、项目运行 环境配置: 运行环境 Java≥8、MySQL≥5.7、Node.js≥14 开发工具 后端&…

JS实现灯光闪烁效果

在 JS中&#xff0c;我们可以实现灯光闪烁效果&#xff0c;这里主要用 setInterval 和 clearInterval 两个重要方法。 效果图 源代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>灯闪烁效果<…

7.PPT:“中国梦”学习实践活动【20】

目录 NO1234​ NO5678​ NO9\10\11 NO1234 考生文件夹下创建一个名为“PPT.pptx”的新演示文稿Word素材文档的文字&#xff1a;复制/挪动→“PPT.pptx”的新演示文稿&#xff08;蓝色、黑色、红色&#xff09; 视图→幻灯片母版→重命名&#xff1a;“中国梦母版1”→背景样…

学习笔记十九:K8S生成pod过程

K8S生成pod过程 流程图具体生成过程用户提交 Pod 定义API Server 处理请求调度器分配节点&#xff08;Scheduling&#xff09;目标节点上的 Pod 创建网络配置状态上报与监控控制器管理&#xff08;Controller Manager&#xff09;就绪与服务发现 关键错误场景高级特性 流程图 具…

封装descriptions组件,描述,灵活

效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…

21.2.6 字体和边框

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 通过设置Rang.Font对象的几个成员就可以修改字体&#xff0c;设置Range.Borders就可以修改边框样式。 【例 21.6】【项目&#xff…

360手机刷机 360手机解Bootloader 360手机ROOT

360手机刷机 360手机解Bootloader 360手机ROOT 问&#xff1a;360手机已停产&#xff0c;现在和以后&#xff0c;能刷机吗&#xff1f; 答&#xff1a;360手机&#xff0c;是肯定能刷机的 360手机资源下载网站 360手机-360手机刷机RootTwrp 360os.top 360rom.github.io 一、…

链表专题-02

链表专题 /*** 链表的节点* param <E>*/ public class ListNode<E> {public E element;public ListNode<E> next;public ListNode() {}public ListNode(E element) {this.element element;}public ListNode(E element, ListNode<E> next) {this.eleme…

外部中断实验 #STM32F407

外部中断实验 此实验将外部中断配置为按键输入&#xff0c;通过按键输入触发外部中断&#xff0c;在外部中断里面实施相应的处理&#xff0c;具体功能&#xff1a; 按下KEY0&#xff0c;翻转LED0状态按下KEY1&#xff0c;翻转LED1状态按下KEY2&#xff0c;同时翻转LED0和LED1…

机器学习8-卷积和卷积核1

机器学习8-卷积和卷积核1 卷积与图像去噪卷积的定义与性质定义性质卷积的原理卷积步骤卷积的示例与应用卷积的优缺点优点缺点 总结 高斯卷积核卷积核尺寸的设置依据任务类型考虑数据特性实验与调优 高斯函数标准差的设置依据平滑需求结合卷积核尺寸实际应用场景 总结 图像噪声与…

SVN 提交与原有文件类型不一样的文件时的操作

SVN 提交与原有文件类型不一样的文件时的操作 背景 SVN 服务器上原本的文件是软链接类型的&#xff0c;但是我将它改成普通文件再上传。出现了以下提示&#xff1a; 解决过程 本来想着通过 svn rm 和 svn add 来解决&#xff0c;但是行不通。 最终解决方案 svn rm --keep-…

阿里云专有云网络架构学习

阿里云专有云网络架构 叶脊&#xff08;spine-leaf&#xff09;网络和传统三层网络拓扑对比 阿里云网络架构V3拓扑角色介绍推荐设备设备组网举例带外管理网络带外网和带内网对比设备介绍 安全网络设备介绍 参考 后续更新流量分析叶脊&#xff08;spine-leaf&#xff09;网络和传…

Deepseek本地部署指南:在linux服务器部署,在mac远程web-ui访问

1. 在Linux服务器上部署DeepSeek模型 要在 Linux 上通过 Ollama 安装和使用模型&#xff0c;您可以按照以下步骤进行操作&#xff1a; 步骤 1&#xff1a;安装 Ollama 安装 Ollama&#xff1a; 使用以下命令安装 Ollama&#xff1a; curl -sSfL https://ollama.com/download.…