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

4.RabbitMQ高级特性 幂等 可靠消息 等等

一、如何保证生产者生产消息100%的投递成功

  1. 保障消息的成功发出
  2. 保障MQ节点的成功接收
  3. 发送端收到MQ节点(Broker)确认应答
  4. 完善的消息进行补偿机制

1. 理解Confirm确认消息机制

  • 消息的确认,是指生产者投递消息后,如果Broker收到消息,则会给我们生产者一个应答。
  • 生产者进行接收应答,用来确定这条消息是否正常的发送到了Broker,这种方式也是消息可靠性投递的核心保障!

1.1 Confirm确认消息流程解析

在这里插入图片描述

2. 理解Return消息机制

Return Listener 用于处理一些不可路由的消息!

我们的消息生产者,通过指定一个Exchange和RoutingKey把消息送达到某一个队列中去,然后我们的消费者监听队列,进行消费处理操作。

但是在某些情况下,如果我们在发送消息的时候,当前的exchange不存在或者指定的路由key路由不到,这个时候如果我们需要监听这种不可达的消息,就需要使用 Return Listener

二、如何保证消费者消费消息成功

1.消费端的手工ACK和NACK

  • 消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿!
  • 如果由于服务器宕机等严重问题,那我们就需要手工进行ACK,保障消费端消费成功

2.消费端的重回队列

  • 消费端重回队列是为了针对没有成功处理掉消息,把消息重新投递给Broker
  • 一般实际应用中,都会关闭重回队列,也就是设置为false。

三、如何保证MQ挂掉消息还在?

可以设置交换机、队列、消息的持久化。

四、消息的限流

1.什么事消费端限流

假设一个场景,我们的RabbitMQ服务器上有上万条未处理的消息,我们随便打开一个消费者客户端。会出现下面情况:

  • 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据!导致服务死掉。

RabbitMQ提供了一种qos(服务质量保证)功能,既在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或者channel设置的Qos的值)未被确认前,不进行消费新的消息。

  • void basicQos(int prefetchSize, int prefetchCount, boolean global) throws IOException
  • prefetchSize:0
  • prefetchCount:告诉RabbitMQ不要同时给一个消费者推送多少条消息,既一旦有N个小希还没有ack,则该消费者将block掉,直到有消息ack
  • global:true / false 是否将上面设置应用于 channel ,简单点来说,就是上面限制是 channel级别的,还是consumer(消费者)级别的。

五、延迟消息 延迟交换机(也就是说的定时消息)

常见的应用场景,比如商城下单,每个订单有个30分钟倒计时,30分钟到了后,关闭订单。

延迟消息、可靠性消息 都在下面代码中。

代码地址

相关文章:

4.RabbitMQ高级特性 幂等 可靠消息 等等

一、如何保证生产者生产消息100%的投递成功 保障消息的成功发出保障MQ节点的成功接收发送端收到MQ节点(Broker)确认应答完善的消息进行补偿机制 1. 理解Confirm确认消息机制 消息的确认,是指生产者投递消息后,如果Broker收到消…...

ES常见错误总结

目录 报错信息 复盘 org.elasticsearch.index.query.QueryShardException:No mapping found for [xx] in order to sort on 报错信息 测试环境 org.elasticsearch.index.query.QueryShardException: No mapping found for [xx] in order to sort on 数据不存在的时候或者…...

35、下载、安装 jdk11 记录,Idea中把项目从 jdk8 换 jdk 11

之前一直用jdk8,现在改成 11的试试看 登录官网下载这个11 https://www.oracle.com/cn/java/technologies/downloads/#java11-windows 下载jdk的oracle官网 需要自己注册oracle账户 修改环境变量的 JAVA_HOME Path 路径这里原本添加8的时候有了,不…...

TinyVue - 华为云 OpenTiny 出品的企业级前端 UI 组件库,免费开源,同时支持 Vue2 / Vue3,自带 TinyPro 中后台管理系统

华为最新发布的前端 UI 组件库,支持 PC 和移动端,自带了 admin 后台系统,完成度很高,web 项目开发又多一个选择。 关于 OpenTiny 和 TinyVue 在上个月结束的华为开发者大会2023上,官方正式进行发布了 OpenTiny&#…...

ubuntu下自启动设置,为了开机自启动launch文件

1、书写sh脚本文件 每隔5秒钟启动一个launch文件,也可以直接在一个launch文件中启动多个,这里为了确保启动顺利,添加了一些延时 #! /bin/bash ### BEGIN INIT sleep 5 gnome-terminal -- bash -c "source /opt/ros/melodic/setup.bash…...

脚本:PDF文件批量转换成图片(python3)

文章目录 语言用法源码1源码2 语言 语言:python 3 用法 用法:选择PDF文件所在的目录,点击 确定 后,自动将该目录下的所有PDF转换成单个图片,图片名称为: pdf文件名.page_序号.jpg 如运行中报错,需要自行…...

Spring和mybatis整合

一、Spring整合MyBatis 1. 导入pom依赖 1.1 添加spring相关依赖(5.0.2.RELEASE) spring-core spring-beans spring-context spring-orm spring-tx spring-aspects spring-web 1.2 添加mybatis相关依赖 mybatis核心:mybatis(3.4.5) Mybatis分页:pagehel…...

应知道的python基础知识

1、运算符 2、特殊情况下的逻辑运算 3、循环中的else 3.1 while else 3.2 for else 4、列表相关操作 列表的相关操作 4.1增(append, extend, insert) 通过append可以向列表添加元素:列表.append(新元素数据)通过extend可以将另一个列表中的元素逐一添加到列表中:列表.exte…...

FFmpeg<第一篇>:环境配置

1、官网地址 http://ffmpeg.org/download.html2、linux下载ffmpeg 下载: wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2解压: tar xvf ffmpeg-snapshot.tar.bz23、FFmpeg ./configure编译参数汇总 解压 ffmpeg-snapshot.tar.bz2 之后&…...

深度学习:Sigmoid函数与Sigmoid层区别

深度学习:Sigmoid函数与Sigmoid层 1. Sigmoid神经网络层 vs. Sigmoid激活函数 在深度学习和神经网络中,“Sigmoid” 是一个常见的术语,通常用来表示两个相关但不同的概念:Sigmoid激活函数和Sigmoid神经网络层。这两者在神经网络…...

❤ Ant Design Vue 2.28的使用

❤ Ant Design Vue 2.28 弹窗 //按钮 <a-button type"primary" click"showModal">Open Modal</a-button>//窗口 <a-modal v-model:visible"visible" title"Basic Modal" ok"handleOk"><p>Some con…...

R语言02-R语言中的向量

概念 在R语言中&#xff0c;向量&#xff08;Vector&#xff09;是最基本的数据结构之一&#xff0c;用于存储相同类型的多个元素。向量可以包含数值、字符、逻辑值等&#xff0c;但其中的所有元素必须具有相同的数据类型。向量可以通过c()函数创建&#xff0c;也可以通过其他…...

windows linux 都可执行的脚本 bat, shell 共存

核心, 执行一行解析一行 windows:执行的地方进行解析, 可以任意跳转执行; bash从上往下解析执行; 一行行解析发现语法错误; 差异: windows可以部分不解析; linux需要从上往下解析合法; 总结:linux, windows可以一上一下共存 # linux code# windows code 关键: 脚本解析的差…...

MATLAB图论合集(二)计算最小生成树

今天来介绍第二部分&#xff0c;图论中非常重要的知识点——最小生成树。作为数据结构的理论知识&#xff0c;Prim算法和克鲁斯卡尔算法的思想此处博主不详细介绍&#xff0c;建议在阅读本帖前熟练掌握。 对于无向带权图&#xff0c;在MATLAB中可以直接以邻接矩阵的方式创建出来…...

unity 模型显示在UI上 并交互(点击、旋转、缩放)

项目工程&#xff1a;unity模型显示在UI上并交互&#xff08;点击、旋转、缩放&#xff09;资源-CSDN文库 1.在Assets创建 Render Texture&#xff08;下面会用到&#xff09;&#xff0c;根据需要设置Size 2.创建UIRawImage&#xff0c;并把Render Texture赋上 3.创建相机&am…...

html实现页面切换、顶部标签栏(可删、可切换,点击左侧超链接出现标签栏)

一、在一个页面&#xff08;不跨页面&#xff09; 效果&#xff1a; 代码 <!DOCTYPE html> <html><head><style>/* 设置标签页外层容器样式 */.tab-container {width: 100%;background-color: #f1f1f1;overflow: hidden;}/* 设置标签页选项卡的样式…...

n-皇后问题(DFS)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…...

漏洞利用和权限提升

使用Kali Linux进行漏洞利用和权限提升是渗透测试过程中的一部分&#xff0c;用于评估系统的安全性。 漏洞利用&#xff1a; 选择目标&#xff1a; 首先&#xff0c;确定 要进行漏洞利用的目标系统。这可能是一个具有已知漏洞的应用程序、服务或操作系统。 收集信息&#xff…...

开源网安受邀参加软件供应链安全沙龙,推动企业提升安全治理能力

​8月23日下午&#xff0c;合肥软件行业软件供应链安全沙龙在中安创谷科技园举办。此次沙龙由合肥软件产业公共服务中心联合中安创谷科技园公司共同主办&#xff0c;开源网安软件供应链安全专家王晓龙、尹杰受邀参会并带来软件供应链安全方面的精彩内容分享&#xff0c;共同探讨…...

回归分析扫盲:为什么非线性模型不能直接用最优子集选择法

最近有人给我发了篇文章&#xff1a; 一个问题有一堆变量&#xff0c;我们要选取哪些变量来建模呢&#xff1f;我们来看看这篇文章是怎么做的&#xff1a; 这个方法简单来说就是&#xff1a;对于这一堆变量&#xff0c;我们每次尝试剔除其中一个变量&#xff0c;然后用剩下的变…...

小学期第一周作业

...

保姆级教程:用QGIS 3.22.16给火星遥感影像‘抠图’,从创建矢量图层到GDAL裁剪一步到位

火星地质勘探实战&#xff1a;用QGIS精准提取毅力号影像的五大核心技巧 当第一缕阳光掠过火星杰泽罗陨石坑的悬崖&#xff0c;毅力号传回的遥感影像中藏着无数科学秘密。作为太空数据分析师&#xff0c;我们常需要从广袤的火星地表影像中精确"抠"出目标区域——就像地…...

虚幻引擎小白人下岗指南:三步搞定商城角色替换,附赠武器隐藏和动画修复彩蛋

虚幻引擎角色替换实战指南&#xff1a;从基础操作到进阶技巧 第一次打开虚幻引擎时&#xff0c;那个默认的"小白人"角色总让人感觉缺乏个性。作为开发者&#xff0c;我们都希望游戏中的角色能快速展现独特风格。本文将带你用最简洁的流程完成商城角色替换&#xff0c…...

从Hive Metastore到HiveServer2:手把手教你配置生产级远程访问服务

从Hive Metastore到HiveServer2&#xff1a;生产级远程访问服务架构与实践 在大数据生态系统中&#xff0c;Hive作为数据仓库工具扮演着至关重要的角色。随着企业数据规模的增长&#xff0c;单机部署模式已无法满足多用户并发访问的需求。本文将深入探讨如何构建一个高可用、安…...

B站视频下载神器:如何优雅地将Bilibili内容保存到本地

B站视频下载神器&#xff1a;如何优雅地将Bilibili内容保存到本地 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/b…...

Vue3后台管理系统终极指南:V3 Admin Vite 5.0全面解析

Vue3后台管理系统终极指南&#xff1a;V3 Admin Vite 5.0全面解析 【免费下载链接】v3-admin-vite ☀️ A crafted Vue3 admin template | Vue Admin | Vue Template | Vue3 Admin | Vue3 Template | Vue 后台 | Vue 模板 | Vue3 后台 | Vue3 模板 项目地址: https://gitcode…...

如何在Windows上完美使用苹果触控板:终极配置指南

如何在Windows上完美使用苹果触控板&#xff1a;终极配置指南 【免费下载链接】mac-precision-touchpad Windows Precision Touchpad Driver Implementation for Apple MacBook / Magic Trackpad 项目地址: https://gitcode.com/gh_mirrors/ma/mac-precision-touchpad 还…...

终极SQLite数据库管理指南:DB Browser for SQLite完整使用手册

终极SQLite数据库管理指南&#xff1a;DB Browser for SQLite完整使用手册 【免费下载链接】sqlitebrowser Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite&quo…...

对比直接使用官方api体验taotoken在api密钥管理与审计上的便利

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方 API 体验 Taotoken 在 API 密钥管理与审计上的便利 效果展示类&#xff0c;分享一个从直接使用多个模型厂商 API…...

生物医学论文降AI工具免费推荐:2026年生物医学毕业论文知网AIGC超标免费4.8元一次过完整方案

生物医学论文降AI工具免费推荐&#xff1a;2026年生物医学毕业论文知网AIGC超标免费4.8元一次过完整方案 整理了一份生物医学论文降AI的完整选购指南&#xff0c;按性价比排序。 首推嘎嘎降AI&#xff08;www.aigcleaner.com&#xff09;&#xff0c;4.8元&#xff0c;99.26%…...