RabbitMQ09_实现延迟消息

RabbitMQ 实现延迟消息

      • 1、使用死信交换机实现延迟消息
      • 2、使用延迟消息插件实现延迟消息

1、使用死信交换机实现延迟消息

当一个队列中的消息满足下列情况之一时,就会成为死信(dead letter):

  1. 消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false
  2. 消息过期
  3. 设置了消息上限的队列消息堆积满了,最早的消息可能成为死信

发送消息给队列A并设置消息过期时间,使用 dead-letter-exchange 属性给队列A指定死信交换机,该死信交换机将消息路由到队列B,消费者监听消费队列B中的消息。

2、使用延迟消息插件实现延迟消息

这个插件可以将普通交换机改造为支持延迟消息功能的交换机,当消息投递到交换机后可以暂存一定时间,到期后再投递到队列。

  1. 下载并安装延迟消息插件

将插件放在 RabbitMQplugins 目录下,执行以下命令启用插件:

rabbitmq-plugins enable rabbitmq_delayed_message_exchange
  1. 声明延迟交换机

方式一:

@Bean
public DirectExchange delayExchange(){return ExchangeBuilder.directExchange("delay.direct").delayed() // 设置delay的属性为true.durable(true) // 持久化.build();
}

方式二:

@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "delay.queue", durable = "true"),exchange = @Exchange(name = "delay.direct", delayed = "true"),key = "delay"
))
public void listenDelayMessage(String msg){log.info("接收到delay.queue的延迟消息:{}", msg);
}
  1. 发送消息时通过消息头 x-delay 设置延迟时间
@Test 
void testPublisherDelayMessage() {// 1.创建消息    String message = "hello, delayed message";// 2.发送消息,利用消息后置处理器添加消息头rabbitTemplate.convertAndSend("delay.direct", "delay", message, new MessagePostProcessor() {@Overridepublic Message postProcessMessage(Message message) throws AmqpException {// 添加延迟消息属性message.getMessageProperties().setDelay(5000);return message;}});
}

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

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

相关文章

Linux笔记---简单指令

1. 使用的环境 博主使用的是华为云服务器xshell终端的方式学习的,因为据说这样的方式比较接近以后的工作环境。 其中云服务器安装的是Ubuntu操作系统(以Linux为内核,适合新手学习Linux的一个版本) 这里的云服务器不一定使用华为的,但是我在…

论文推荐——犹豫直觉模糊偏好关系积性一致性及其在群决策中的应用

犹豫直觉模糊偏好关系积性一致性及其在群决策中的应用 论文全文 论文全文 论文最巧妙的地方就是修正了积性一致性的条件,使得修复方法完全满足互补条件,也算对大佬的工作做了一个很好的修补。

PVE8最新安装使用指南、优化Proxmox VE 8.1

PVE镜像下载 1、在浏览器输入以下网址下载pve的iso安装镜像。 Download Proxmox software, datasheets, agreements 2、制作系统引导盘 这里使用rufus工具将ISO文件刻录进U盘 rufus下载地址:https://wwf.lanzoul.com/i72bm24j105c 密码:5k8t 下载完成后直接双击运行&…

string类(C++)

哈喽各位!,久违了,最近怎么样捏,本次进入C的string类,加油加油呀! 随记:鼓励创新,宽容失败! 1.标准库的string类 1.1string类的了解 string的文献参考链接-->strin…

thinkphp8 从入门到放弃(后面会完善用到哪里写到哪)

thinkphp8 从入门到放弃 引言 thinkphp* 大道至简一、 thinkphp8 安装安装Composerthinkphp 安装命令(tp-项目名称)多应用安装(一个项目不会只有一个应用)安装完文件目录如下本地部署配置伪静态好了项目可以run 二、架构服务(Service&#xf…

DataGrip远程连接Hive

学会用datagrip远程操作hive 连接前提条件: 注意:mysql是否是开启状态 启动hadoop集群 start-all.sh 1、启动hiveserver2服务 nohup hiveserver2 >> /usr/local/soft/hive-3.1.3/hiveserver2.log 2>&1 & 2、beeline连接 beelin…

智能车镜头组入门(六)车模的控制

本文会简单的介绍一些车模控制的方法。前文也说到过,因为我是写摄像头部分的,所以车模的控制部分我只能给大家简单的介绍下。 大家可能有所听说,智能车竞赛又被称为调参竞赛。显然好的参数决定了小车车速的上限。 调参调的是哪呢&#xff1…

【智能大数据分析 | 实验一】MapReduce实验:单词计数

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML&a…

人工智能项目式综合实验教学平台,让教学实训更简单

一、引言 人工智能(AI)的发展推动了职业教育进入一个全新的交叉学科时代,对培养具有跨学科知识和创新能力的高级工程技术人才提出了新的要求。在OBE框架下,目前的实验教学更多地强调在受控环境下验证算法的有效性,而较…

【Linux】Linux进程的概念

一、冯诺依曼体系结构 我们常见的计算机,比如笔记本,我们不常见的计算机,比如服务器,大部分都遵循冯诺依曼体系结构。 截至目前,我们所认识的计算机,都是有一个一个独立的硬件组成: 输入单元&a…

兼容多个AI应用接口,支持用户自定义切换AI接口

项目背景 2023年ChatGPT横空出世,给IT行业造成了巨大的反响。我第一次发现这个ChatGPT有着如此神奇的功能(智能对话,知识问答,代码生成,逻辑推理等),我感到非常吃惊!经过一番学习和…

张养浩,文坛政坛的双重巨匠

张养浩,字希孟,号云庄,又称齐东野人,生于元世祖至元七年(公元1270年),卒于元英宗至治三年(公元1329年),享年59岁。他是中国元代著名的文学家、政治家&#xf…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《兼顾参与调频辅助服务的工商业储能电站充放电策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

公私域互通下的新商机探索:链动2+1模式、AI智能名片与S2B2C商城小程序的融合应用

摘要:在数字化时代,公私域流量的有效融合已成为企业获取持续增长动力的关键。本文旨在探讨如何通过链动21模式、AI智能名片以及S2B2C商城小程序源码的综合运用,实现公私域流量的高效互通,进而为门店创造巨大商机。通过分析这些工具…

李宏毅机器学习2023-HW11-Domain Adaptation

文章目录 TaskLinkBaselineSimple BaselineMedium BaselineStrong BaselineBoss Baseline Task Domain Adaptation 通过训练真实图片得到分类模型,并将其应用到涂鸦图片上进行分类,来获得更高的精准度。 Link kaggle colab Baseline Simple Baseli…

12V转100V低压升高压DC/DC电源GRB12-100D-100mA-Uz(0-3V)

特点 ● 效率高达75%以上 ● 1*2英寸标准封装 ● 单电压输出 ● 超高性价比 ● 电压控制输出,输出电压随控制电压的变化而线性变压 ● 工作温度: -40℃~75℃ ● 阻燃封装,满足UL94-V0 要求 ● 温度特性好 ● 可直接焊在PCB 上 应用 GRB 系列模块电源是一…

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

🧸安清h:个人主页 🎥个人专栏:【计算机网络】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…

cmake--set_target_properties

作用 设置某个指定的目标(文件,)的某些属性; 可以设置的属性 设置版本属性 cmake_minimum_required(VERSION 3.10)project(test_set_target_properties)add_library(mylib SHARED src/test.cpp) set_target_properties(mylib PROPERTIES VERSION 1.0.…

使用Kali Linux系统生成木马病毒并实现远程控制计算机

木 马 生成木马病毒并实现远程控制计算机 木马病毒是指隐藏在正常程序中的一段具有特殊功能的恶意代码 通常有控制端和被控制端两个可执行程序。 它通过将自身伪装吸引用户下载执行,向施种木马者提供打开被种者电脑的门户,使施种者可以任意毁坏、窃…

红队攻防 | 凭证获取的10个方法,零基础入门到精通,收藏这一篇就够了

作为红队成员,就像许多其他APT一样,我们须找到通往目标网络和资产的方法,因此要付出大量努力,从我们可以获得的任何资源中获取登录凭证或令牌。 这并不意味着我们只寻找登录特定服务的用户名和密码,在许多情况下&…