RabbitMQ实践——最大长度队列

大纲

  • 抛弃消息
    • 创建最大长度队列
    • 绑定
    • 实验
  • 转存死信
    • 创建死信队列
    • 创建可重写Routing key的最大长度队列
    • 创建绑定关系
    • 实验

在一些业务场景中,我们只需要保存最近的若干条消息,这个时候我们就可以使用“最大长度队列”来满足这个需求。该队列在收到消息后,如果达到长度上限,会将队列头部(最早的)的信息从队列中移除。
在进行实验之前,我们先创建一个交换器direct.max.length,用于接收消息。
在这里插入图片描述

抛弃消息

创建最大长度队列

我们创建一个名字叫queue.max.length的队列,并且配置属性x-max-length的值为3。这就意味着这条队列最大消息个数是3,超过3个消息时,老消息会被移除。
在这里插入图片描述

绑定

我们定义Routing key是to.queue.max.length时,向上述创建的队列queue.max.length发布消息。
在这里插入图片描述

实验

我们依次发送消息内容是:1、2、3、4的消息。
在这里插入图片描述
但是该队列最多只保存了3条消息
在这里插入图片描述
最早的一条消息1被抛弃掉了
在这里插入图片描述

转存死信

如果我们不希望消息被抛弃,则可以将其转存到死信中。
转存到死信有两个方案,在《RabbitMQ实践——使用死信机制对异常消息进行处理》中已经有探讨:

  • 使用独立的死信交换器
  • 重写Routing key

本文我们将使用相对简单的“重写Routing key”方案,这样可以让我们少创建一个交换器。

创建死信队列

我们创建一个用于保存死信的队列queue.dead.letter。没做什么特殊配置。
在这里插入图片描述

创建可重写Routing key的最大长度队列

我们创建一个新的队列queue.max.length.with.dead.letter.routing.key。
在这里插入图片描述
它制定了下面几个属性

  • x-max-length:队列最多保存3条消息。
  • x-dead-letter-exchange:使用direct.max.length交换器进行消息路由。这个交换器也是原始消息的交换器。
  • x-dead-letter-routing-key:修改从队列顶部移除的消息的Routing key为to.queue.dead.letter,以供交换器路由。

创建绑定关系

在之前案例创建的交换器direct.max.length上,我们将上述队列绑定。
在这里插入图片描述

实验

我们使用Routing key:to.queue.max.length.with.dead.letter.routing.key向queue.max.length.with.dead.letter.routing.key队列发送了4条消息,最终它只保存了后3条,最早的一条会被转存到死信队列中。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

在Windows上用MinGW编译OpenCV项目运行全流程

一、准备软件 OpenCV源码CMake工具MinGW工具链(需要选用 posix 线程版本:原因见此) 二、操作步骤 官网提供了VC16构建版本的二进制包,但是没有给出GCC编译的版本。所以如果使用MinGW进行构建,那就只能从源码开始构建…

make与makefile

目录 一、make的默认目标文件与自动推导 二、不能连续make的原因 执行原理 touch .PHONY伪目标 make指令不回显 makefile多文件管理 简写依赖方法 三、回车与换行 四、缓冲区 一、make的默认目标文件与自动推导 假设这是一个makefile文件,make的时候默认生…

Origin电源维修高压发生器GEXUS-3 GEXUS-15R-02U

GEXUS-3电源维修 Origin高压发生器维修 Origin电源维修 光电设备电源维修 Origin高压电源维修故障分析应注意两点: 故障分析检测和故障硬件更换,根据高压电源故障提示和工作表现初步判断故障的类型和哪些硬件出了问题,再根据初步判断缩小检测…

了解Spring的BeanPostProcessor

了解Spring的BeanPostProcessor Spring框架提供了一种机制,允许在Spring容器实例化Bean之前和之后进行自定义的修改。这个机制就是BeanPostProcessor接口。BeanPostProcessor是Spring的核心接口之一,用于在Spring容器创建和初始化Bean的过程中进行干预和…

Java-拼接字符串数组(String.join()方法)

问题引入 刷算法题lc2288的时候遇见的一个小细节,记录一下,有兴趣的朋友可以做一下,练习一下哈哈~ 此题需要使用大家都比较熟悉的split方法将句子按照空格拆分为字符串数组。 然后再在数组中对每一个字符串操作,操作完成后要求…

【尚庭公寓SpringBoot + Vue 项目实战】预约看房与租约管理(完结)

【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结) 文章目录 【尚庭公寓SpringBoot Vue 项目实战】预约看房与租约管理(完结)1、业务说明2、接口开发2.1、预约看房管理2.1.1.保存或更新看房预约2.1.2. 查询个人预约…

【linux】shell脚本中设置字体颜色,背景颜色详细攻略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

Nginx Proxy 代理测试

目录 https://blog.csdn.net/Lzcsfg/article/details/139781909 一. 实验准备 二. 配置反向代理 三. 配置二层代理 解释流程 一. 实验准备 关闭防火墙和selinux,准备三台同一网段的虚拟机 localhostRoucky_linux9.4192.168.226.20localhostRoucky_linux9.419…

高校新闻头条系统

摘 要 随着互联网技术的快速发展,网络几乎成为了人们搜集信息和交流沟通最方便、快捷的通道,科技创新一直在影响着人们的生活,人们的衣食住行也在不断变化,与此同时,也大大改变了人们获取信息的方式,人们获…

Unity的渲染管线

渲染管线 概念 Unity的渲染管线是在图形学渲染管线的基础上,加上了高度可配置可扩展的框架,允许开发者自定义渲染流程。 渲染管线(渲染流水线)概述:将数据分阶段的变为屏幕图像的过程。 数据指的是模型、光源和摄像…

『FPGA通信接口』LVDS接口(4)LVDS接收端设计

文章目录 1.LVDS接收端概述2逻辑框图3.xapp855训练代码解读4.接收端发送端联调5.传送门 1.LVDS接收端概述 接收端的传输模型各个属性应该与LVDS发送端各属性一致,例如,如果用于接收CMOS图像传感器的图像数据,则接收端程序的串化因子、通道个…

最新版ChatGPT对话系统源码 Chat Nio系统源码

最新版ChatGPT对话系统源码 Chat Nio系统源码 支持 Vision 模型, 同时支持 直接上传图片 和 输入图片直链或 Base64 图片 功能 (如 GPT-4 Vision Preview, Gemini Pro Vision 等模型) 支持 DALL-E 模型绘图 支持 Midjourney / Niji 模型的 Imagine / Upscale / Variant / Re…

【for循环】最大跨度

【for循环】最大跨度 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int n;int max 0, min 100;cin>>n;for(int i1; i<n; i1){int a;cin>>a;if(a>max){max a;}i…

VTABLE 基本表和透视表的分页功能

基本表和VTable数据分析透视表支持分页&#xff0c;但透视组合图不支持分页。 配置项&#xff1a; pagination.totalCount&#xff1a;数据项的总数。数据透视表中的VTable字段将被自动补充&#xff0c;以帮助用户获取数据项的总数。pagination.perPageCount&#xff1a;显示每…

STM32通过SPI硬件读写W25Q64

文章目录 1. W25Q64 2. 硬件电路 3. 软件/硬件波形对比 4. STM32中的SPI外设 5. 代码实现 5.1 MyI2C.c 5.2 MyI2C.h 5.3 W25Q64.c 5.4 W25Q64.h 5.5 W25Q64_Ins.h 5.6 main.c 1. W25Q64 对于SPI通信和W25Q64的详细解析可以看下面这篇文章 STM32单片机SPI通信详解-C…

Java宝藏实验资源库(8)多态、抽象类和接口

一、实验目的 理解面向对象程序的基本概念。掌握类的继承和多态的实现机制。熟悉抽象类和接口的用法。 二、实验内容、过程及结果 **1.Using the classes defined in Listing 13.1, 13.2, 13.3, write a test program that creates an array of some Circle and Rectangle in…

轨道地铁智能录音无线通信解决方案

一、行业背景 随着社会经济和通信行业的迅速发展&#xff0c;电话已成为企业运作中必不可少的联络手段。但电话作为即时沟通手段&#xff0c;往往无法进行事后追溯和复盘&#xff0c;容易造成不必要的麻烦。尤其在交通轨交行业领域&#xff0c;对语音工作的发生过程更需要有个…

全栈人工智能工程师:现代博学者

任何在团队环境中工作过的人都知道&#xff0c;每个成功的团队都有一个得力助手——无论你的问题性质如何&#xff0c;他都能帮助你。在传统的软件开发团队中&#xff0c;这个人是一个专业的程序员&#xff0c;也是另一种技术的专家&#xff0c;可以是像Snowflake这样的数据库技…

基于STM8系列单片机驱动74HC595驱动两个3位一体的数码管

1&#xff09;单片机/ARM硬件设计小知识&#xff0c;分享给将要学习或者正在学习单片机/ARM开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 为了节省单片机MCU的IO口资源驱动6个数码管&…

CAC 2.0融合智谱AI大模型,邮件安全新升级

在数字化时代&#xff0c;电子邮件的安全问题日益成为关注的焦点。Coremail CACTER邮件安全人工智能实验室&#xff08;以下简称“CACTER AI实验室”&#xff09;凭借其在邮件安全领域的深入研究与创新实践&#xff0c;不断推动技术进步。 此前&#xff0c;CACTER AI实验室已获…