RabbitMQ如何确保消息发送 ? 消息接收?

news2024/11/24 22:25:12

发送方确认机制:

信道需要设置为 confirm 模式,则所有在信道上发布的消息都会 分配⼀个唯⼀ ID 。⼀旦消息被投递到 queue (可持久化的消息需要写⼊磁盘),信道会发送⼀个确认给⽣产者(包含消息唯⼀ ID)。
如果 RabbitMQ 发⽣内部错误从⽽导致消息丢失 ,会发送⼀条 nack(未确认)消息给⽣产者。所有被发送的消息都将被 confirm(即 ack) 或者被nack⼀次 。但是没有对消息被 confirm 的快慢做任何保证, 并且同⼀条消息不会既被 confirm⼜被nack 发送⽅确认模式是异步的 ,⽣产者应⽤程序在等待确认的同时,可以继续发送消息。当确认消息到达⽣产者,⽣产者的回调⽅法会被触发。

ConfirmCallback接⼝:

只确认是否正确到达 Exchange 中,成功到达则回调

ReturnCallback接⼝:

消息失败返回时回调

接收方确认机制:

消费者在声明队列时,可以指定 noAck 参数,当noAck=false时,RabbitMQ会等待消费者显式发回ack信号后才从内存(或者磁盘,持久化消息)中移去消息。否则,消息被消费后会被⽴即删除。

消费者接收每⼀条消息后都必须进⾏确认(消息接收和消息确认是两个不同操作)。只有消费者确认了消息,RabbitMQ 才能安全地把消息从队列中删除


RabbitMQ不会为未ack的消息设置超时时间,它判断此消息是否需要重新投递给消费者的唯⼀依据是消费该消息的消费者连接是否已经断开。这么设计的原因是RabbitMQ允许消费者消费⼀条消息的时间可以很⻓。保证数据的最终⼀致性


如果消费者返回ack之前断开了链接,RabbitMQ 会重新分发给下⼀个订阅的消费者。(可能存在消息重复消费的隐患,需要去重)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round #719 (Div. 3) E. Arranging The Sheep

翻译: 你正在玩“安排羊”游戏。这个游戏的目标是让羊排好队。游戏中的关卡是由长度为𝑛的字符串描述的,由角色的’组成。(空格)和*(绵羊)。在一个动作中,你可以移动任何羊向左或向右移动一个方格,如果相应的方格存在…

Paper写作怎么按照要求来具体分析?

许多留学生通常面临写学术Paper的问题,而大多数都不知道Paper如何写,因为写Paper并不是容易的事情。学术Paper应按照严格要求和规则撰写,而其应提供扎实,有争议的论点,然后由相关的无论是来自其他来源还是自己研究的证…

流媒体直播播放协议:HLS、RTMP、HTTP-FLV

流媒体直播播放协议:HLS、RTMP、HTTP-FLV一、推拉流二、协议介绍1. HLS2. RTMP3. HDL (HTTP-FLV)一、推拉流 在开始之前,先把流媒体服务中的双端关系说一下:在一个完整的流媒体服务框架中,角色就是“两端加一服”。推流端、拉流端…

httpclient

1.什么是httpclient HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 2.http请求(结合spring的注解) 2-1GET请…

相对位置编码之RPR式:《Self-Attention with Relative Position Representations》论文笔记

😄 额,本想学学XLNet的,然后XLNet又是以transformer-XL为主要结构,然后transformer-XL做了两个改进:一个是结构上做了segment-level的循环机制,一个是在attention机制里引入了相对位置编码信息来避免不同se…

AutoCAD Electrical 2022—源箭头和目标箭头

在一张图纸上插入源 箭头; 选中一根导线; 如果源和目标在同一张图纸上,则可以点击确定,插入目标箭头; 如果不在同一张图纸上,则点击否,后面在插入目标箭头; 在另一张图纸上插入目标…

学习笔记:引用

概念 引用的作用是给一个变量起别名 格式: type & 别名 原名 引用必须初始化,在初始化后不能改变 int &b;ba;错误 int& b a; bc;不是将b从a的别名变为c的别名 而是将c的值赋给a int a 10; int& b a; b 20;//用别名改数据&…

Apifox:详细使用教程,带你轻松拿捏

目录 Apifox简介 Apifox的安装与使用 Apifox新建项目的流程 编写接口文档 Apifox简介 我们在日常编程开发过程中经常实行的是前后端分离架构的模式,一个项目的落地会通过产品、开发、测试三方会审,对项目需求评审过后,前后端开发会制定一…

基于SpringBoot医院信息管理系统源码

hisystem 1. 用idea打开项目,并且配置maven下载依赖 2. 导入数据库 hisystem.sql 3. 修改application.yml数据库相关配置 4. 用户注册,验证邮件的邮箱考虑到安全问题,暂不提供授权码,如有需求可使用自己邮箱,开启POP3…

Vue3 - 路由 Vue-router 4.X(配置与使用教程)

目录前言安装配置准备工作配置路由基本使用路由传参 1路由传参 2路由传参 3SEO前言 在咱们 Vue2 时代,官方推荐咱们使用 vue-router 3.X 的库,如果是用脚手架创建的话,就直接默认集成到里面了。 Vue3 使用的是 vue-router 4.X 官方库&#xf…

[附源码]计算机毕业设计JAVA小超市进销存管理系统

[附源码]计算机毕业设计JAVA小超市进销存管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

m扩频通信系统在瑞利信道中的误码率性能matlab仿真

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 本课题,我们主要涉及到两个理论要点,第一个是瑞利衰落条件,第二个是扩频通信。下面分别对这两个理论进行介绍: 第一个是瑞利衰落条件&#x…

我们又重写了一个关键服务

#01 QueryCoord 组件介绍 QueryCoord 是 Milvus 中查询集群的中心调度节点,在用户将一个 Collection Load 到内存中时,QueryCoord 负责将该 Collection 的 Segment 调度到 QueryNode 集群中,以支持后续的查询。 QueryCoord 最核心的操作有4…

将egg项目部署至服务器

文章目录1.下载linux版本的node-v162.将node安装包从自己电脑上上传到自己的服务器3.在服务器中解压压缩包4.配置环境变量5.使文件生效6.将egg项目传到服务器指定目录下7.下载依赖8.npm start 运行不会占用终端 并且一直在运行 可以使用npm stop停用9.最后使用云服务器ip:端口号…

Linux22 --- 网络为什么要分层、使用tcp协议实现两个进程间通信的功能、IP地址转换函数

一、网络为什么要分层 1 1、分层的优点 1)各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个…

Linux-Hadoop集群配置

文章目录一、配置Hadoop集群1、在master虚拟机上配置hadoop(1)编辑Hadoop环境配置文件 - hadoop-env.sh(2)编辑Hadoop核心配置文件 - core-site.xml(3)编辑HDFS配置文件 - hdfs-site.xml(4&…

1542_AURIX_TC275_CPU子系统_内核

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 我因为看了这个章节的开篇有些疑惑去看了内核手册,现在学习的进程终于又重新回归,回到了TC275这个MCU的学习上。 这里的几条笔记记录是隔了很久写的,前面…

【Java面试】HashMap死循环问题

问题 最近几道面试题被问了是否了解并发情况下JDK7中HashMap发生死循环,导致CPU占用100%的问题。 由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,这是一个普遍的问题。 如果是在单线程下使用HashMap,自然是没…

[MAUI] 开篇-初识MAUI

前言 在2020年5月, 微软宣布了MAUI跨平台框架, MAUI 是Xamarin.Forms演变而来, 这也就意味着, 如果你原来具备Xamarin.Forms开发经验, 你可以流畅的过渡到MAUI开发当中。 原本于2021年底发布的MAUI正式版被推迟到了2022年5月底发布。现在, 你目前可以通过安装VS2022 预览版进行…

Elasticsearch倒排索引

什么是正排索引? 如下图,有一张商品表(tb_goods): 对于mysql数据库来说,肯定会给“id”创建主键索引,然后根据“id”来查询对应的商品信息,而这种情况就被称为“正排索引” 现在有…