RabbitMQ高级特性-发送方确认

news/2024/12/22 0:13:55/

对于发送方发送消息到RabbitMQ的可靠性机制

引入:在持久化的消息正确存⼊RabbitMQ之后,还需要有⼀段时间(虽然很短,但是不可忽视)才能存⼊磁盘中.RabbitMQ并不会为每条消息都进⾏同步存盘(调⽤内核的fsync⽅法)的处理, 可能仅仅保存到操作系统缓存之中⽽不是物理磁盘之中. 如果在这段时间内RabbitMQ服务节点发⽣了宕机、重启等异常情况, 消息保存还没来得及落盘, 那么这些消息将会丢失

RabbitMQ为我们提供了两种解决⽅案来实现持久化:
a. 通过事务机制实现
b. 通过发送⽅确认(publisher confirm) 机制实现

事务比较消耗信能,因此通常使用发送⽅确认(publisher confirm) 机制实现,RabbitMQ为我们提供了两个⽅式来控制消息的可靠性投递
1. confirm确认模式
2. return退回模式

注:这两个模式是不互斥的,可以同时存在

1、producer->Broker  (发送方确认)

            1)producer->exchange : confirm 模式

            2)exchange->queue : return 模式

            3)队列溢出:死信等

2、Broker  (持久化(交换机、队列、消息))

3、Broker->Consumer

         自动确认:消息送达到consumer时,消息会自动删除

 


http://www.ppmy.cn/news/1534061.html

相关文章

Redis-主从复制

分布式系统,涉及到一个非常关键的问题:单点问题 如果某个服务器程序,只有一个节点,就会出现: 可用性问题(这个服务器挂了,服务中断)性能/支持的并发量有限 引入分布式系统,主要也是为了解决上述的单点问题 在分布式系统中,希望有多个服务器来部署redis服务,从而构成一个red…

【JAVA开源】基于Vue和SpringBoot的校园资料分享平台

本文项目编号 T 059 ,文末自助获取源码 \color{red}{T059,文末自助获取源码} T059,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

游戏如何对抗改包

游戏改包是指通过逆向分析手段及修改工具,来篡改游戏包内正常的设定和规则的行为,游戏包被篡改后,会被植入/剔除模块进行重打包。 本期图文我们将通过实际案例分析游戏改包的原理,并分享游戏如何应对改包问题。 安卓平台常见的改…

django创建一个新的应用

使用 python manage.py startapp myapp 命令可以在你的 Django 项目中创建一个新的应用,名为 myapp。应用是 Django 项目的组成部分,可以帮助你组织代码和功能。执行该命令后,会在你的项目目录下创建一个名为 myapp 的文件夹,包含…

【AIGC】内容创作——AI文字、图像、音频和视频的创作流程

我的主页:2的n次方_ 近年来,生成式人工智能(AIGC,Artificial Intelligence Generated Content)技术迅速发展,彻底改变了内容创作的各个领域。无论是文字、图像、音频,还是视频,A…

JSON字符串转换成Java集合对象

在Java中,将JSON字符串转换成Java集合对象通常涉及到使用JSON处理库,如Jackson或Google的Gson。以下是使用这两个库的示例: 使用Jackson 添加Jackson依赖:如果你使用Maven,可以在pom.xml文件中添加以下依赖&#xff1…

数据结构双向链表和循环链表

目录 一、循环链表二、双向链表三、循环双向链表 一、循环链表 循环链表就是首尾相接的的链表,就是尾节点的指针域指向头节点使整个链表形成一个循环,这就弥补了以前单链表无法在后面某个节点找到前面的节点,可以从任意一个节点找到目标节点…

【API安全】crAPI靶场全解

目录 BOLA Vulnerabilities Challenge 1 - Access details of another user’s vehicle Challenge 2 - Access mechanic reports of other users Broken User Authentication Challenge 3 - Reset the password of a different user Excessive Data Exposure Challenge …