当前位置: 首页 > news >正文

发送方确认

在使用RabbitMQ的时候,可以通过消息持久化来解决因为服务器的异常而导致的消息就是,但是还有一个问题,当消息的生产者将消息发送出去之后,消息到底有没有正确地到达服务器呢?如果消息在到达服务器之前已经丢失,持久化操作也解决不了这个问题,那么该如何解决呢?

RabbitMQ为我们提供了两种解决方案:

1.通过事务机制实现

2.通过发送方确认机制实现

因为事务机制比较消耗性能,在实际工作中使用也不多,在这里主要介绍confirm机制来实现发送方的确认.RabbitMQ为我们提供了两个方式来控制消息的可靠性投递

1.confirm确认模式

生产者在发送消息的时候,对发送端设置了一个ConfirmCallback的监听,无论消息是否到达Exchange,这个监听都会被执行,如果Exchange成功收到,ACK确认字符为true,如果没有收到消息 ACK就为false.

在这里要讲一下ConfirmCallback和ConfirmListener区别:

两者都是用来处理消息确认的机制,但他们属于不同的客户端库,并且使用场景和方式有所不同.

1.ConfirmListener时RabbitMQ java Client库中的接口,这个库时RabbitMQ官方提供的一个直接与RabbitMQ服务器交互的客户端库,它提供了两个方法:handleAck和handleNack,用于处理消息确认和否定的事件.

2.ConfirmCallback是Spring AMQP框架中的一个接口,专门为Spring环境设计,用于简化与RabbitMQ交互的过程,它只包含一个confirm方法,用于处理消息确认的回调

在Spring Boot应用中,通常会使用ConfirmCallback,因为它与Spring框架的其他部分更加整合,可以利用Spring的配置和依赖注入功能,而在使用RabbitMQ java Client库时,则可能会直接实现ConfirmListener接口,更直接的与RabbitMQ的Channel交互.

2.return退回模式

消息到达Exchange之后,会根据路由规则匹配,把消息放入Queue中,Exchange到Queue的过程,如果一条消息无法被任何队列消费,可以选择把消息退回给发送者.消息退回给发送者时,我们可以设置一个返回回调方法,对消息进行处理.

使⽤RabbitTemplate的setMandatory⽅法设置消息的mandatory属性为true(默认为false). 这个属性
的作⽤是告诉RabbitMQ, 如果⼀条消息⽆法被任何队列消费, RabbitMQ应该将消息返回给发送者, 此时 ReturnCallback 就会被触发

相关文章:

发送方确认

在使用RabbitMQ的时候,可以通过消息持久化来解决因为服务器的异常而导致的消息就是,但是还有一个问题,当消息的生产者将消息发送出去之后,消息到底有没有正确地到达服务器呢?如果消息在到达服务器之前已经丢失&#xf…...

如何使用HighBuilder前端开发神器

一,前言 前端开发是网页和应用程序设计与开发中的一个重要分支,直接涉及用户界面的构建和用户与网页的交互。前端是用户在浏览器中看到的部分,负责为用户提供良好的体验。 二,前段介绍 1. 前端的组成 前端开发主要由三个核心技…...

发现了NitroShare的一个bug

NitroShare 是一个跨平台的局域网开源网络文件传输应用程序,它利用广播发现机制在本地网络中找到其他安装了 NitroShare 的设备,从而实现这些设备之间的文件和文件夹发送。 NitroShare 支持 Windows、macOS 和 Linux 操作系统。 NitroShare允许我们为…...

如何关闭 Ubuntu22.04 LTS 的更新提醒

引言 众所周知,Ubuntu 的软件更新和版本更新提醒是又多又烦,如果不小心更新到了最新的 Ubuntu 还可能面临各种各样的问题,这里提供一个解决方法 步骤 首先按照下面步骤打开 Software & Updates 然后按照下面步骤依次点击 最后关闭即可…...

美术资源规范

很多项目都没有重视资源规范,而是不断追求更高的运行效率。然而资源规范在项目中是非常重要的,资源规范才是高效运行的前提。 在有的项目中,一个人物模型几万个面、一个建筑模型就几十万个面,贴图也不规范,1024、2048…...

UE5.4 PCG 获取地形Layer

使用AttributeFilter:属性过滤器 节点 设置地形Layer名称和权重 效果:...

用 cURL 控制 OpenSIPS3.4

opensips-cli -x mi reload_routes,重读脚本路由opensips-cli -x mi ds_list,就是 dispatcher list 的缩写,简单明了opensips-cli -x mi ds_reload,修改 OpenSIPS 数据库的 dispatcher 表之后,用此命令读到内存opensip…...

【LuatOS】基于WebSocket的同步请求框架

0x00 缘起 由于使用LuatOS PC模拟器发起快速且海量HTTP请求(1000 次/秒)时,会耗尽PC的TCP连接资源,而无法进行继续进行访问请求。故使用WebSocket搭建类似于HTTP的“同步请求相应”的通信框架,以实现与HTTP类似的功能…...

架构师考试系列(8)论文专题:信息系统安全设计

摘要 2021年4月,我公司承接了一款健康养老系统项目,旨在提供以健康养老为核心的管理平台。本文探讨了如何在系统开发中贯彻安全优先原则,保障系统的安全性和保密性。系统包括健康档案、照护计划、服务审计、健康状况跟踪、费用管理等功能模块。我作为系统架构设计师,负责了…...

浙大一附院就医:分享给大家工作久了关节疼的就医经验,腱鞘炎

症状描述:日常生活不影响,但左手手腕往前或者往后扭曲力度过大时会有痛感。 医嘱详情:腱鞘炎,可能是工作键盘打字久了导致,开了三盒药贴,一盒三片,一共9片,另外再买一个比较硬的护腕…...

如何降低 PCIe RTT?

以下是一些降低 PCIe RTT(往返时间)的方法: 硬件方面4: 优化主板设计与布局: 合理分配 PCIe 通道:确保不同的 PCIe 设备被分配到独立的、互不干扰的 PCIe 通道上。例如,如果主板上有多个 PCIe 插…...

数据结构之二叉树--前序,中序,后序详解(含源码)

二叉树 二叉树不能轻易用断言,因为树一定有空 二叉树链式结构的实现 在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType _data;struct B…...

红黑树及MySQL 基础架构

红黑树简介及左旋、右旋、变色 红黑树(Red Black Tree)是一种自平衡二叉搜索树(二叉查找树),是一种特殊的二叉搜索树,在进行插入和删除时通过特定操作保持二叉树自身的平衡,从而获得较高的查找性能。 红黑树的平衡操作通过左旋、右旋和变色来…...

大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

QJson-趟过的各种坑(先坑后用法)

QJson-趟过的各种坑【先坑后用法】 Chapter1 QJson-趟过的各种坑【先坑后用法】一、不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge二、json格式化输出1.构建…...

基于STM32的hx711称重模块使用

欢迎入群共同学习交流 时间记录:2024/11/9 一、知识点记录 1、hx711 1)HX711是一款高精度压力传感器专用的24位模数转换芯片,主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围 2)工作电压2.6-5.5V 3)引…...

Nginx独立项目相关配置说明

配置前说明 1. 部署环境为https环境的,除华为云表态托管等都需要此配置,如cloud。 2. 部署环境为https环境的,可以使用api.js直接访问后端服务,无需此配置。 3. 转发的后台服务接口需要和后台人员沟通确认一致。详细配置说明 **…...

Nuxt3之使用lighthouse性能测试及性能优化实操

lighthouse性能测试工具 什么是 LightHouse 呢 Lighthouse 是一个开源的自动化工具,用于提高网页的质量。可以通过浏览器的开发者工具运行,也可以作为命令行工具或 Node.js 模块集成到持续集成系统中。Lighthouse 可以帮助开发者: 性能优化…...

‌webdriver.Chrome()参数简介

webdriver.Chrome()参数‌如下: ‌executable_path‌:指定ChromeDriver的路径,若未设置且系统环境变量中已配置,则会自动寻找。‌options‌:通过webdriver.ChromeOptions()创建,用于设定浏览器的启动选项&…...

Ubuntu如何更换环境中的Python版本

Ubuntu Python 版本迁移指南 卸载 Python 3.8 # 移除 Python 3.8 sudo apt remove python3.8# 清理依赖 sudo apt autoremove# 清理缓存 sudo apt clean安装 Python 3.10 # 更新软件包列表 sudo apt update# 安装软件源管理工具 sudo apt install software-properties-commo…...

终极指南:如何免费解锁Cursor Pro完整功能 - 突破AI编辑器限制的完整方案

终极指南:如何免费解锁Cursor Pro完整功能 - 突破AI编辑器限制的完整方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youv…...

通用框架操作系统:统一异构应用框架的运行时与治理平台

1. 项目概述:一个面向未来的通用框架操作系统最近在开源社区里,一个名为TELLEBO/universal-framework-os的项目引起了我的注意。乍一看这个标题,可能会觉得有点“大词”堆砌的感觉——“通用”、“框架”、“操作系统”,每一个词单…...

告别网络依赖:CircuitJS1桌面版带你体验离线电路仿真的自由

告别网络依赖:CircuitJS1桌面版带你体验离线电路仿真的自由 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1…...

基于轨道模型构建现代化流程编排系统:从概念到实践

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫s4kuraN4gi/orbit-app。乍一看这个仓库名,可能很多人会有点懵,不知道它具体是做什么的。我花了一些时间深入研究,发现这是一个围绕“轨道”概念构建的现代化应用。这…...

从零构建本地化AI代码助手:架构、微调与工程实践

1. 项目概述:从零构建你自己的Claude代码助手最近在开发者社区里,一个名为“build-your-claude-code-from-scratch”的项目引起了我的注意。这个标题本身就充满了吸引力——它暗示着一种可能性:我们是否能够不依赖任何现成的、闭源的商业API&…...

窗口大小控制神器:3分钟掌握WindowResizer的终极窗口调整技巧

窗口大小控制神器:3分钟掌握WindowResizer的终极窗口调整技巧 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些顽固的应用程序窗口而束手无策吗?是…...

基于MCP协议构建AI金融数据可视化服务器:从原理到实战部署

1. 项目概述:一个为AI智能体提供实时金融数据可视化的MCP服务器最近在折腾AI智能体(Agent)的生态,发现一个挺有意思的痛点:当你想让AI帮你分析股票、基金或者加密货币时,它往往只能给你干巴巴的数字和文字描…...

用Git和Markdown构建个人知识库:Wandercode项目实践指南

1. 项目概述:从“漫游代码”到个人知识管理系统的蜕变最近在GitHub上看到一个挺有意思的项目,叫“Wandercode”,直译过来就是“漫游代码”。乍一看这个标题,可能会让人联想到某种代码生成器或者自动化脚本工具。但当我深入探究其仓…...

5分钟快速上手:PlantUML Editor - 告别拖拽,用代码绘制专业UML图表

5分钟快速上手:PlantUML Editor - 告别拖拽,用代码绘制专业UML图表 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 还在为绘制复杂的UML图表而烦恼吗?你…...

基于vLLM与OpenAI API的LLM生产部署框架实战指南

1. 项目概述:一个面向生产环境的LLM部署框架最近在折腾大语言模型(LLM)的部署,发现了一个挺有意思的项目:run-llama/llama_deploy。这名字乍一看,可能会让人以为它只是用来部署Meta的Llama系列模型的&#…...