RebbitMQ 消息队列(高级应用)

news2024/10/1 12:24:43

RabbitMQ 高级特性

消息可靠性投递,consumer ACK,消费端限流,TTL,死信队列,延迟队列,日志与监控,消息可靠性与追踪,管理

RabbitMQ 应用问题

消息可靠性保障,消息幂等性处理,

RabbitMQ 集群搭建

rabbitmq 高可用集群搭建

内容

1.1消息的可靠投递
使用rabbitmq的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败的场景,rabbitmq为我们提供了confirm确认模式和return退回模式来控制消息的可靠性传递
rabbitmq整个消息投递路径为:
producer到rabbitmq broker到exchange到queue到consumer
消息从producer到exchange会返回一个confirmCallback
消息从exchange到queue投递失败则会返回一个returnCallback
我们可利用这两个callback来控制消息的可靠性传递

1.2 Consumer ACK
ack指acknowledge,确认,表示消费端收到消息后的确认方式
有三种确认方式
自动确认:acknowledge=“none”,手动确认:acknowledge=“manual”,根据异常情况确认:acknowledge=“auto”
其中自动确认是指,消息一旦被consumer接收,则自动确认收到,并将相应message从rabbitmq的消息缓存中移除,但在实际业务中,很可能消息收到了,但是业务出现了异常,那么该消息就会丢失,如果设置了手动去人方式,则需要在业务成功处理后,调用channel.basicAck()方法,手动签收,让其重新发送消息

1.3消费端限流
请求瞬间增多,每秒五千个请求,设置每秒从rabbitmq中拉取一千个请求,保证系统正常运行

1.4 TTL
TTL为time to live(存活时间/过期时间)
当消息达到存活时间后,还没被消费就会自动清除
rabbitmq可以对消息设置过期时间,也可以对整个队列设置过期时间

1.5 死信队列
在这里插入图片描述

死信队列(DLX),dead letter exchange(死信交换机) 当消息成为dead message后,可以被发送到另一个交换机,这个交换机就是DLX
消息成为死信的三种情况
1.队列长度达到限制,2.消费者拒接消费消息,basicNack/basicReject并且不把消息重新放入原目标队列requeue=false,3.原队列存在消息过期时间设置,消息达到超时时间未被消费
队列绑定私信交换机:给队列设置参数:X-dead-letter-exchange和X-dead-letter-routing-key
设置死信队列的步骤
1.声明正常的队列和交换机,2.声明死信队列和死信交换机,3.正常队列绑定死信交换机,设置参数

1.6 延迟队列
延迟队列,即消息进入队列后不会立即被消费,只有到达指定时间后,才会被消费
需求:1.下单,三十分钟未支付,取消订单,回滚库存,2.新用户注册七天后,发送问候短信
实现方式:1.定时器,2.延时队列
使用TTL和死信队列组合实现延迟队列的效果

1.7消息追踪
在使用任何消息中间件时,难免会出现某条消息异常丢失的情况,对于rabbitmq而言,可以使用Firehose和rabbitmq_tracing插件来实现消息追踪功能

消息可靠性保障,消息补偿机制
消息幂等性保障,乐观锁解决方案

集群搭建

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

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

相关文章

JavaScript 基础【快速掌握知识点】

目录 为什么要学JavaScript? 什么是JavaScript 特点: 组成: JavaScript的基本结构 基本结构 内部引用 外部引用 console对象进行输出 JavaScript核心语法 1、变量声明 2、数据类型 3、运算符 4、条件语句 5、循环语句 6、数组 7…

【shell】for while 循环的例子,快速了解

for 循环读一个文件的每一行 for i in cat temp.list;do echo $i;done for ip in $(cat ip.list);do ping -c 2 $ip;done循环打印数字 for a in {1…5};do echo $a;done for a in {1…5…2};do echo $a;done #等差 for a in $(seq 1 5);do echo $a;done for a in $(seq 1 2 5)…

内网穿透常用方法系列总结

前言在内网渗透时,一个WebShell或CobaltStrike、Metasploit上线等,只是开端,更多是要内网横向移动,扩大战果,打到核心区域。但后渗透的前提是需要搭建一条通向内网的“专属通道”,才能进一步攻击。可实战中…

【华为OD机试模拟题】用 C++ 实现 - 找出重复代码(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

C语言static关键字

目录static修饰局部变量static修饰全局变量static修饰函数static是C语言的关键字,它有静态的意思static的三种用法:修饰局部变量修饰全局变量修饰函数 static修饰局部变量 我们先看一个程序: void print() {int a 0;a;printf("%d\n&…

【华为OD机试模拟题】用 C++ 实现 - 数组组成的最小数字(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

更改tomcat访问端口()

1Centos7开启端口 查看防火墙状态命令: systemctl status firewalld 启动防火墙命令: systemctl start firewalld 关闭防火墙命令: systemctl stop firewalld 开放端口命令: firewall-cmd --zonepublic --add-port5011/tcp --pe…

23、高自由度下的E类波形理论计算(附Matlab代码)

23、高自由度下的E类波形理论计算(附Matlab代码) 0、代码 任意占空比、电压导数条件下的E类波形与阻抗条件计算Matlab 注意修改路径,我这边是:!!!!!!&#…

自适应池化、最大值池化和均值池化效率的比较分析

1 问题我们在深度学习的过程中,我们学到了自适应池化、最大值池化和均值池化。那么,我们想要探究一下自适应池化、最大值池化和均值池化效率,哪一个更高?2 方法在之前的学习中,我们学到了自适应池化、最大值池化和均值…

c++11 标准模板(STL)(std::unordered_set)(八)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…

【Rust 日报】2023-2-24 Dioxus 0.3 发布,巨大的更新

ascii-d - 画ASCII示意图的工具Rust写的画ASCII示意图的工具。支持各大平台。程序员的最爱啊。https://github.com/huytd/ascii-d/raw/master/_meta/toolbar-final.gifDioxus 0.3 发布&#xff0c;巨大的更新Dioxus 是新出的与 Yew 类似的 Rust Web 前端框架&#xff08;为什么…

【sciter】sciter数据可视化

一、柱状图 <div class="bar-chart item"></div> <!-- bar-chart --> <script type

【华为OD机试模拟题】用 C++ 实现 - 找单词(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

【华为OD机试模拟题】用 C++ 实现 - RSA 加密算法(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

猜数字游戏——C++

我们在有了一定的C基础了以后&#xff0c;简单的实现一个案例&#xff08;其实只要会while循环结构就行了&#xff09;&#xff0c;我们本章内容会实现猜数字游戏&#xff0c;大家有什么语法疑问可以看看我写的&#xff1a;C快速入门_染柒_GRQ的博客-CSDN博客&#xff0c;该博客…

【算法】最短路算法

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…

金三银四吃透这份微服务笔记,面试保准涨10K+

很多人对于微服务技术也都有着一些疑虑&#xff0c;比如&#xff1a; 微服务这技术虽然面试的时候总有人提&#xff0c;但作为一个开发&#xff0c;是不是和我关系不大&#xff1f;那不都是架构师的事吗&#xff1f;微服务不都是大厂在玩吗&#xff1f;我们这个业务体量用得着…

2023年湖北住建厅七大员建筑八大员怎么报考?启程别

2023年湖北住建厅七大员建筑八大员怎么报考&#xff1f;启程别 建筑施工企业关键技术岗位人员可以叫七大员也可以叫八大员&#xff0c;施工现场专业人员&#xff0c;从事相关岗位人员都应该持证上岗。 为什么有的叫七大员&#xff1f;有的叫八大员呢&#xff1f;甚至还有五大员…

Web Spider Ast-Hook 浏览器内存漫游-数据检索

文章目录一、资源下载二、通过npm安装anyproxy模块三、anyproxy的介绍以及基本使用1. anyproxy的功能介绍2. anyproxy的基本使用四、给浏览器挂代理五、实操极验demo案例总结提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、资源下载 Github&#x…

【数通网络交换基础梳理1】二层交换机、以太网帧、MAC地址详解及数据帧转发原理(爆炸细)

一、网络模型 万年不变&#xff0c;先从模型结构分析&#xff0c;现在大家熟知的网络模型有两种。第一种是&#xff0c;OSI七层模型&#xff0c;第二种是TCP/IP模型。在实际运用中&#xff0c;参考更多的是TCP/IP模型。 OSI七层模型 TCP/IP模型 不需要全部理解&#xff0c;…