RabbitMQ延时队列

一、RabbitMQ下载并使用插件

1、查看RabbitMQ插件的文件路径

docker inspect rabbitmq

找到Mounts下面Name:rabbitmq_plugin的Source即为插件路径

使用 cd 进入到该目录

2、下载插件

wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.13.0/rabbitmq_delayed_message_exchange-3.13.0.ez

3、使用插件

1、进入到容器内部

docker exec -it rabbitmq /bin/bash

2、启动插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

3、查看插件是否使用成功

rabbitmq-plugins list

4、重启容器

docker restart rabbitmq

二、使用延时队列

1、生产者

@Testpublic void test01(){//创建消息后置处理器对象MessagePostProcessor postProcessor = message -> {//设置消息过期时间/毫秒message.getMessageProperties().setHeader("x-delay","10000");return message;};rabbitTemplate.convertAndSend("exchange.test.delay","routing.key.test.delay","hello delay message by plug" + new SimpleDateFormat("HH:mm:ss").format(new Date()),postProcessor);}

2、消费者

@RabbitListener(queues={"queue.test.delay"})public void lisenter03(String data, Message message, Channel channel) throws IOException {log.info("接收到 : " + data);log.info("当前时间 : " + new SimpleDateFormat("HH:mm:ss").format(new Date()));channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);}

三、其他(消息可靠性-生产者确认)

1、配置application.yml

spring:rabbitmq:host: localhostport: 5672username: adminpassword: 123456virtual-host: /publisher-confirm-type: correlated #交换机确认publisher-returns: true #队列确认

2、编写配置类

@Component
@Slf4j
public class RabbitMqConfig implements RabbitTemplate.ConfirmCallback,RabbitTemplate.ReturnsCallback {@Autowiredprivate RabbitTemplate rabbitTemplate;//构造后执行@PostConstructpublic void InitRabbit(){rabbitTemplate.setReturnsCallback(this);rabbitTemplate.setConfirmCallback(this);}//发送到交换机执行的回调函数@Overridepublic void confirm(CorrelationData correlationData, boolean ack, String cause) {log.info("confirm 回调 data : " + correlationData);log.info("confirm 回调 ack : " + ack);log.info("confirm 回调 cause : " + cause);}//发送到队列失败才执行的回调函数//使用延时队列时成功也会执行@Overridepublic void returnedMessage(ReturnedMessage returnedMessage) {log.info("returnedMessage 回调 消息 : " + returnedMessage.getMessage().getBody());log.info("returnedMessage 回调 状态码 : " + returnedMessage.getReplyCode());log.info("returnedMessage 回调 描述 : " + returnedMessage.getReplyText());log.info("returnedMessage 回调 交换机 : " + returnedMessage.getExchange());log.info("returnedMessage 回调 路由键 : " + returnedMessage.getRoutingKey());}
}

四、延时队列的其他实现思路

可以通过配置消息的过期时间和死信队列,消费者监听死信队列,同样可以实现延时消息的效果

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

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

相关文章

React Native 之 react-native-share(分享)库 (二十三)

react-native-share 是一个流行的 React Native库,它允许你在移动应用中分享文本、链接、图片等内容到各种社交网络和消息应用。以下是对其原理的简要概述以及代码示例的解析。 代码示例解析 1. 安装 npm install react-native-share # 或者 yarn add react-n…

vue-el-steps 使用1(上一步、下一步)

vue代码 <template> <div class"app-container"> <el-steps :active"active" finish-status"success" simple style"margin-top: 20px"> <el-step title"选择分类"></el-step> <el-step t…

6月01日,每日信息差

第一、东航 C919 国产大飞机成功执飞首个跨境商业包机&#xff0c;从上海虹桥机场飞往香港特区&#xff0c;主要目的是为了运送参加 「沪港同心 相聚上海」 实习计划的香港青年学生。当天的返程包机预计在下午从香港起飞&#xff0c;回到虹桥机场&#xff0c;届时将有一场欢迎仪…

字典树,AcWing 5726. 连续子序列

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 5726. 连续子序列 - AcWing题库 二、解题报告 1、思路分析 字典树存储前缀和 考虑边遍历计算前缀和&#xff0c;边查询字典树 查询流程&#xff1a; 记当前前缀和为s 如果当前位k为1&#xff0c;那么s …

苹果电脑如何清理最近打开的文稿记录 Mac如何移除浏览痕迹保护隐私

日常使用苹果电脑的过程中&#xff0c;我们经常会打开各种文稿&#xff0c;浏览网页等操作。然而&#xff0c;这些操作可能会留下一些记录&#xff0c;涉及到个人隐私和数据安全问题。下面我们来看看苹果电脑如何清理最近打开的文稿记录&#xff0c;Mac如何移除浏览痕迹保护隐私…

C++进阶篇章:set与map(pair , multiset , multimap)

目录 1.关联式容器与序列式容器 2.pair&#xff08;键值对&#xff09; 3.set 构造函数 find函数 count函数&#xff1a; insert函数 4.multiset 5.map insert函数 operator[] 1.关联式容器与序列式容器 C中关联式容器与序列式容器是两种不同的容器 1.关联式容器 关…

GAMIT目录配置

1打开home&#xff0c;显示隐藏文件&#xff0c;CTRH 2修改目录 #set gamitpath gamitpath/opt/gamit10.7 export PATH$PATH:${gamitpath}/com/:${gamitpath}/gamit/bin:${gamitpath}/kf/bin HELP_DIR${gamitpath}/help export HELP_DIR #set GMT path gmtpath/usr/lib/gmt P…

力扣--双指针15.三数之和

详细思路 排序数组&#xff1a;首先对数组 nums 进行排序&#xff0c;目的是为了方便后续使用双指针查找和避免重复结果。遍历数组&#xff1a;使用一个 for 循环从头遍历到倒数第三个元素。i 表示当前固定的元素。 跳过重复元素&#xff1a;如果当前元素 nums[i] 与前一个元素…

SpringBoot项目实现自定义注解方式的接口限流

一&#xff0c;实现原理 该限流方式使用的是令牌桶算法&#xff0c;令牌桶算法是基于漏桶算法的一种改进&#xff0c;主要在于令牌桶算法能够在限制服务调用的平均速率的同时&#xff0c;还能够允许一定程度内的突发调用。 系统以固定的速率向桶中添加令牌当有请求到来时&#…

软设之快速排序

快速排序是冒泡排序的改进算法 它采用的是分治法&#xff0c;基本思想是把原问题分解为若干规模更小但结构与原问题相似的子问题&#xff0c;通过递归解决这些子问题&#xff0c;然后将这些子问题的解组合成原问题的解。 它的步骤是 1.在待排序的n个记录中任取一个记录&…

张大哥笔记:你卖什么,就反着来卖

普通人打工的一生&#xff0c;就是努力工作&#xff0c;买房&#xff0c;买车&#xff0c;送孩子上好的学校&#xff0c;为了孩子不要输在起跑线上&#xff0c;拼命报各种补习班等&#xff0c;这些都是普通人认为的主流价值观文化&#xff0c;也造就了一批批的赚钱机器&#xf…

带DSP音效处理D类数字功放TAS5805M中文资料

国产替代D类数字功放中文资料访问下方链接 ACM8628 241W立体声182W单通道数字功放中文寄存器表 内置DSP多种音频处理效果ACM8628M-241W立体声或182W单通道数字功放 1 特性 具有增强处理能力和低功率损耗的 TAS5805M 23W、无电感器、数字输入、立体声、闭环 D 类音频放大器 …

华为设备配置静态路由和默认路由

华为设备配置静态路由和默认路由 理论部分知识&#xff1a; 路由分为两个大类&#xff1a;静态路由-----动态路由 静态路由&#xff1a;手工指定&#xff0c;适用于小规模的网络应用场景&#xff0c;如果网络规模变大&#xff0c;这样的方式非常不适合而且容易出错。 语法&…

java单元测试如何断言异常

​ 在junit单元测试中&#xff0c;我们可以使用 org.junit.Assert.assertThrows 包下的 assertThrows() 方法 这个方法返回了一个泛型的异常 public static <T extends Throwable> assertThrows(Class<T> expectedType, Executable executable)​ 假设我们有以下…

Java之IO流

一、引言 &#xff08;1&#xff09;解释&#xff1a; i&#xff1a;input &#xff08;输入&#xff09; o&#xff1a;output &#xff08;输出&#xff09; &#xff08;2&#xff09;图解 注意&#xff1a; 1、Xxx 这个程序一旦在桌面关闭掉了&#xff0c;也就是运行完…

动态路由OSPF单区域和多区域配置实验

动态路由OSPF的配置 OSPF分类两种情况&#xff1a;单区域 多区域路由 OSPF单区域路由配置 OSPF&#xff1a;开放最短路径优先的路由协议。属于大型动态路由协议&#xff0c;适用于中大型的园区网。 网络拓扑&#xff1a; 配置步骤&#xff1a; 1.完成基本配置&#xff08;略&…

能耗监测系统在上海交通大学闵行校区理科实验楼群的设计与应用

引言 建筑能耗系统&#xff0c;除了基本的电力参数监测、配电系统的运行状况&#xff0c;更加关注能耗的去向。除了常规的园区楼层出线电能计量&#xff0c;还会涉及水&#xff0c;气等能耗计量。 针对上海交通大学闵行校区理科实验楼群能耗监测系统的具体要求&#xff0c;以…

android-AP6212配置

一、调试背景 硬件平台a33 系统android wifi:ap6212a 从内核日志看到模块能加载识别到fw_bcm43438a1.bin ,但是nvram加载的配置是nvram_ap6212.txt&#xff0c;虽然能正常工作&#xff0c;但是对比了一下nvram_ap6212.txt 和nvram_ap6212a.txt还是有差异的 内核日志&#xff1…

依赖管理包介绍

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 相关组件 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get进行依赖管理"相关的内容&#xff0c;本章回中将介绍如何使用get进行状态管理一.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 …