RabbitMQ消息队列:发送者的可靠性
一、消息丢失的可能场景消息从生产者到消费者经过以下流程每一步都可能出问题阶段可能丢失的原因发送阶段连接 MQ 失败、Exchange 不存在、路由找不到 Queue、MQ 内部异常MQ 存储阶段消息已入队但未持久化Broker 突然宕机消费阶段消费者收到消息后宕机、处理过程中抛出异常因此可靠性保障需要三管齐下✅ 确保生产者一定把消息发送到 MQ✅ 确保 MQ 不会丢失消息✅ 确保消费者一定成功处理消息二、生产者可靠性保障2.1 生产者重试机制应对网络抖动当RabbitTemplate与 MQ 连接超时时SpringAMQP 提供阻塞式重试机制。配置application.ymlyamlspring: rabbitmq: connection-timeout: 1s # 连接超时时间 template: retry: enabled: true # 开启重试 initial-interval: 1000ms # 初始等待时间 multiplier: 1 # 等待时长倍数 max-attempts: 3 # 最大重试次数⚠️注意重试是阻塞的会占用当前线程。对性能敏感的业务建议禁用重试或用异步线程发送。2.2 生产者确认机制应对路由失败 / MQ 内部异常RabbitMQ 提供两种确认机制机制触发时机Publisher Confirm消息到达 Exchange 后返回ACK/NACKPublisher Return消息从 Exchange 路由到 Queue失败时返回异常信息开启确认机制spring: rabbitmq: publisher-confirm-type: correlated # 异步回调 publisher-returns: true # 开启 Return 机制2.2.1 配置 ReturnCallback统一处理路由失败每个RabbitTemplate只能配置一个ReturnCallback建议在配置类中统一设置Slf4j Configuration AllArgsConstructor public class MqConfig { private final RabbitTemplate rabbitTemplate; PostConstruct public void init() { rabbitTemplate.setReturnsCallback(returned - { log.error(触发 return callback); log.debug(exchange: {}, returned.getExchange()); log.debug(routingKey: {}, returned.getRoutingKey()); log.debug(message: {}, returned.getMessage()); log.debug(replyCode: {}, returned.getReplyCode()); log.debug(replyText: {}, returned.getReplyText()); }); } }当路由失败时日志会输出类似replyCode: 312 replyText: NO_ROUTE2.2.2 配置 ConfirmCallback按消息处理回执由于每条消息的处理逻辑可能不同ConfirmCallback在每次发送时动态定义。发送消息并添加回调Test void testPublisherConfirm() { // 1. 创建 CorrelationData包含唯一 id CorrelationData cd new CorrelationData(); // 2. 添加 ConfirmCallback cd.getFuture().addCallback(new ListenableFutureCallbackCorrelationData.Confirm() { Override public void onFailure(Throwable ex) { log.error(发送消息异常, ex); } Override public void onSuccess(CorrelationData.Confirm result) { if (result.isAck()) { log.debug(收到 ACK消息发送成功); } else { log.error(收到 NACK发送失败原因{}, result.getReason()); } } }); // 3. 发送消息携带 CorrelationData rabbitTemplate.convertAndSend(hmall.direct, q, hello, cd); }2.2.3 回执结果分析场景Confirm 回执Return 回调路由成功✅ ACK不触发路由失败Exchange 存在但 Queue 不存在✅ ACK✅ 触发replyCode312Exchange 不存在❌ NACK不触发建议大多数业务无需开启生产者确认因为路由失败和 Exchange 错误通常是编程问题可以在开发阶段规避。仅在极高可靠性要求的业务中开启且只处理NACK即可。六、总结最佳实践清单层级措施适用场景生产者开启重试机制网络不稳定生产者开启 Confirm Return对可靠性要求极高的业务

相关新闻

[具身智能-702]:ROSMASTER-M1 的 WIFI 是终端,还是热点?

[具身智能-702]:ROSMASTER-M1 的 WIFI 是终端,还是热点?

ROSMASTER-M1(亚博智能,搭载 RDK X5 版本)WiFi 模式说明术语先厘清:AP 模式 热点(发射 WiFi,别人连小车)STA 模式 无线终端(小车去连接路由器 WiFi)1、出厂默认状态✅ …

2026/8/2 5:58:47阅读更多 →
微信小程序连接本地MySQL数据库:正确架构与全栈开发实战

微信小程序连接本地MySQL数据库:正确架构与全栈开发实战

1. 项目缘起:为什么要在小程序里连接本地数据库?最近在社区里看到不少朋友在问,微信小程序能不能直接连自己电脑上的MySQL数据库做开发测试。乍一听,这想法挺自然的——本地环境跑得快,调试也方便,不用折腾…

2026/8/2 5:58:47阅读更多 →
macOS下载、安装uv-0.12.0(附安装包uv-aarch64-apple-darwin.tar.gz)

macOS下载、安装uv-0.12.0(附安装包uv-aarch64-apple-darwin.tar.gz)

文章目录1. uv 简介2. 0.12.0 版本亮点3. 获取安装包4. 快速开始常用命令1. uv 简介 uv 是一款使用 Rust 编写的极速 Python 包与项目管理器(package and project manager),由 Astral 团队(知名 Python 代码检查工具 Ruff 的缔造…

2026/8/2 5:58:47阅读更多 →
PADS Layout安全间距检查全解析:从原理到实战排错指南

PADS Layout安全间距检查全解析:从原理到实战排错指南

1. 从一次深夜的“红色警报”说起那天晚上,我正为一个四层板的电源模块做最后的DRC(设计规则检查),准备下班。在PADS Layout里点下“验证设计”按钮,看着进度条缓缓前进,心里盘算着明天可以发板了。突然&am…

2026/8/2 7:27:12阅读更多 →
南通中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖崇川/通州/海门/如皋等全域各区 专治不制冷/漏水/异响/跳闸

南通中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖崇川/通州/海门/如皋等全域各区 专治不制冷/漏水/异响/跳闸

在南通,中央空调突发故障是家庭、商铺与写字楼的高频烦心事——中央空调不制冷、内机漏水、外机异响跳闸、开机没反应等问题,往往在盛夏高温时集中爆发。很多用户会搜索“南通中央空调维修”“南通附近中央空调上门师傅”“南通中央空调漏水维修电话”寻…

2026/8/2 7:27:12阅读更多 →
英雄联盟玩家的终极智能助手:Seraphine免费开源工具完全指南

英雄联盟玩家的终极智能助手:Seraphine免费开源工具完全指南

英雄联盟玩家的终极智能助手:Seraphine免费开源工具完全指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 在英雄联盟的激烈对局中,信息就是力量。Seraphine作为一款基于官方LCU API…

2026/8/2 7:27:12阅读更多 →
C# Socket TCP网络编程实战:从基础通信到异步高性能服务

C# Socket TCP网络编程实战:从基础通信到异步高性能服务

1. 从零到一:为什么选择C#和原生Socket来理解网络通信?如果你正在学习C#,并且对网络编程感到好奇,或者你的项目需要让两个程序“说说话”,比如一个桌面应用向一个后台服务发送指令,那么你迟早会接触到Socke…

2026/8/2 7:27:12阅读更多 →
Chrome插件精选:从广告拦截到开发调试,打造高效浏览器工作流

Chrome插件精选:从广告拦截到开发调试,打造高效浏览器工作流

1. 为什么你的浏览器需要一个“外挂大脑”?我们每天都在用浏览器,但绝大多数人只用了它10%的功能。你打开Chrome,无非是搜索、看网页、看视频,偶尔填个表格。但有没有想过,为什么同样的浏览器,在效率高手手…

2026/8/2 7:27:12阅读更多 →
Android Preference深度解析:从声明式UI到状态管理的完整实践

Android Preference深度解析:从声明式UI到状态管理的完整实践

1. 项目概述:为什么Preference依然是Android开发的“定海神针”? 如果你做过Android开发,尤其是需要处理用户设置的应用,那你一定绕不开 Preference 。乍一看,这似乎是个老生常谈的话题,Android官方都推出…

2026/8/2 7:25:12阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →