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

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

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

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

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

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

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

解决方案:confirm模式:

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

解决方案:returns模式

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

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

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

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

②:队列持久化

③:消息持久化}

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

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

二者区分:

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

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

相关推荐
要开心吖ZSH5 分钟前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
Joy T1 小时前
Spring AI 接入已有 Java 项目的三种架构设计
java·人工智能·springai·ai入门·chatclient·ai service·ai能力接入
杨运交1 小时前
[076][核心模块]构建优雅的Java异常处理框架:从错误码到全局异常处理
java·开发语言
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(94):MemGen——在推理过程中动态生成并织入潜在记忆
论文阅读·人工智能·学习·开源·github
caoerzhong2 小时前
仓库数字化成熟度分级:JeeWMS 开源 Java 仓库管理系统如何支撑从可见到自治的四级跃迁
java·开源
MayBaymax2 小时前
RocketMQ 存储机制
java·rocketmq
程序猿_极客2 小时前
【免费】分享一套优质的基于SpringBoot的服装商城管理系统的设计与实现(带可视化图表、协同过滤功能),源码+文档+视频详解(讲解)
java·spring boot·后端·服装商城管理系统
wflynn2 小时前
GitHub 今日推荐|ts-rust:把微软 TypeScript-Go 编译器逐行移植成 Rust 实现
rust·typescript·开源·github·compiler·tsc
用户3721574261352 小时前
Java 查找并高亮 Word 文字:精确查找及正则表达式模糊查找
java
明月_清风2 小时前
面对陌生的 GitHub 项目无从下手?这 4 个网站帮你快速读懂源码
前端·后端·github