RabbitMQ中如何保证消息的可靠性传输

本文主要对于消息队列中的消息是如何保障可靠性进行展开.

要想知道如何保证消息的可靠性传输,就得先了解消息的传输过程,通过这个传输过程针对每个场景可能出现的问题进行解决,考虑并解决到所有可能出现问题的步骤就可以保障消息的可靠性传输.

以下是RabbitMQ的消息的传输过程:

消息传输可能出现问题的地方及其解决方案:

  1. Producer-->Broker过程: 解决方案:发送方确认机制:confirm模式和returns模式

细分: ①:Producer-->Exchange过程----消息发送失败可能原因:网络问题

解决方案:confirm模式:

②:Exchange-->Queue过程---消息发送失败可能原因:代码或配置层面错误,导致消息路由失败

解决方案:returns模式

③:消息发送失败可能原因:队列溢出

解决方案: 引入死信队列 ,即给普通队列配置 "死信交换机" 参数

2.Broker内部:--- 消息发送失败可能的原因:消息到达RabbitMQ服务器(Broker)后,RabbitMQ服 务器宕机呆滞消息丢失.

解决方案:持久化{①:交换机持久化

②:队列持久化

③:消息持久化}

3.Broker-->Consumer过程:---消息发送失败可能的原因:消息到达消费者,还没来得及消费,消费者 就宕机了,或者消费者逻辑有问题.

解决方案:消息确认机制:{将默认的自动确认改为手动确认}

二者区分:

**默认的自动确认:**消息送达Consumer时,消息就会自动删除.不管消息有没有被消费

而**手动确认:**则保障了消息到达消费者被消费后手动进行确认,确保消息被成功消费.

相关推荐
莫逸风14 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898614 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
刘较瘦_15 小时前
AI 开发中的 Git Submodule 父子仓库模式:前后端分仓管理与协作实践
前端·github
yaoxin52112315 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
做个文艺程序员15 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus
小钻风336616 小时前
Spring Boot 文件上传详解:深入理解 MultipartFile 的使用与原理
java·开发语言
其美杰布-富贵-李16 小时前
Spring Boot 工程开发全流程说明
java·spring boot·后端
DeMinds17 小时前
内容没有丢,我为什么总在重新整理?|DeMinds 如何让工作接着继续
ios·github·markdown
前端双越老师18 小时前
如何以前端视角(非0基础)学 Java ?
java·node.js·全栈