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对可靠性要求极高的业务

相关新闻

Comtos Linux 10(朱雀)正式发布

Comtos Linux 10(朱雀)正式发布

【Comtos Linux 10(朱雀)正式发布】 系统版本:10.0 发行版本:核心版 硬件架构:x86_64、aarch64 发布时间:2026年8月1日 发布地点:中国深圳Comtos Linux(朱雀)10.0 核心版…

2026/8/2 5:59:42 阅读更多 →
输出字符菱形的一个巧思

输出字符菱形的一个巧思

输出字符菱形的一个巧思题目描述思路1(直接固定输出)基础语法(C语言前置语句,输出语句)1. 头文件2. 主函数定义3. 输出语句4. 返回值5. 代码格式思路1代码实现思路2(可推广的循环输出)基础语法&…

2026/8/2 5:59:42 阅读更多 →
【 C++ 】vector的模拟实现+vector迭代器失效

【 C++ 】vector的模拟实现+vector迭代器失效

目录 1、基本成员变量 2、默认成员函数 构造函数 析构函数 拷贝构造函数 赋值运算符重载函数 3、容器访问相关函数接口 operator[ ]运算符重载 迭代器 范围for 4、vector空间增长问题 size和capacity reserve扩容 resize swap 交换数据 5、增加的相关函数接口 …

2026/8/2 5:59:42 阅读更多 →

最新新闻

贝叶斯神经网络:从不确定性量化到PyTorch实战

贝叶斯神经网络:从不确定性量化到PyTorch实战

1. 项目概述:从确定性到不确定性的思维跃迁在深度学习的浪潮里,我们习惯了构建一个又一个“黑箱”模型:输入数据,模型给出一个确定的预测值。无论是图像分类的类别概率,还是回归预测的具体数值,传统神经网络…

2026/8/2 10:07:27 阅读更多 →
电竞选手形象塑造:从Bin的案例看团队话语权与舆论标签的博弈

电竞选手形象塑造:从Bin的案例看团队话语权与舆论标签的博弈

在电竞圈,选手的性格与团队氛围一直是粉丝和观众津津乐道的话题。近期,关于BLG上单选手Bin(陈泽彬)在RNG时期“脾气差”的传闻再次被提及,而前RNG教练朱开(KenZhu)在直播中的一番回忆&#xff0…

2026/8/2 10:07:27 阅读更多 →
Unity XR开发与性能优化实战:官方电子书资源深度解析与应用指南

Unity XR开发与性能优化实战:官方电子书资源深度解析与应用指南

1. 项目概述:为什么Unity开发者需要一本“实战指南”? 如果你是一名Unity开发者,无论是刚入门的新手,还是已经摸爬滚打几年的熟手,我相信你都经历过这样的时刻:面对一个复杂的性能问题,比如VR场…

2026/8/2 10:07:27 阅读更多 →
10.2英寸电子墨水屏驱动开发全攻略:从SPI连接到局部刷新与低功耗优化

10.2英寸电子墨水屏驱动开发全攻略:从SPI连接到局部刷新与低功耗优化

1. 项目概述:10.2英寸电子墨水屏HAT (G) 是什么?如果你玩过树莓派、Arduino或者ESP32,肯定对那种小小的黑白墨水屏不陌生,用来显示个天气、做个桌面时钟,小巧又省电。但今天要聊的这块屏,绝对算是个“大家伙…

2026/8/2 10:07:27 阅读更多 →
Spring Boot集成MinIO实现文件永久访问:从临时链接到稳定服务

Spring Boot集成MinIO实现文件永久访问:从临时链接到稳定服务

1. 从“临时链接”到“永久访问”:为什么我们需要重新思考文件服务 在任何一个需要处理用户上传文件的Web应用里,文件存储和访问都是绕不开的基础设施。很多开发者,尤其是刚接触Spring Boot生态的朋友,可能会觉得这很简单&#xf…

2026/8/2 10:07:26 阅读更多 →
SenseCAP Indicator Matter开发板实战:从环境搭建到应用开发全解析

SenseCAP Indicator Matter开发板实战:从环境搭建到应用开发全解析

1. 从硬件到生态:为什么选择 SenseCAP Indicator 作为 Matter 开发板如果你最近在关注智能家居开发,尤其是 Matter 协议,那么“SenseCAP Indicator”这个名字大概率已经出现在你的视野里了。它不仅仅是一块开发板,更是一个为 Matt…

2026/8/2 10:06:26 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

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

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

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

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

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

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

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

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →