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.rhkb.cn/news/338123.html

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

相关文章

C# 使用Aspose生成和修改文档

Aspose库 C#中的Aspose库是一个强大的文件处理库,可以用于各种文件格式的创建、编辑、转换和操作。该库提供了丰富的功能,包括处理文档、电子表格、幻灯片、PDF、图像等多种文件格式,能够轻松实现文件的读取、写入、格式化、样式设置、数据操…

Java Apache Jaccard文本相似度匹配初体验

文章目录 前言一、文本相似度算法的选择二、常见的文本相似度算法介绍三、使用示例1、引入jar包2、方法示例3、Jaccard源码剖析4、Jaccard源码解释 写在最后 前言 产品今天提了个需求,大概是这样的,来,请看大屏幕。。。额。。。搞错了&#…

三丰云评测:免费虚拟主机和免费云服务器体验

今天我来为大家分享一下我的三丰云评测体验。三丰云是一家提供免费虚拟主机和免费云服务器的服务商,为了方便大家了解他们的服务,我特地注册了他们的免费虚拟主机和免费云服务器进行试用。在实际体验中,我发现三丰云的服务表现非常出色。首先…

【产品经理】总篇章

引言: 在最近频繁的产品职位面试中,我深刻体会到了作为产品需要的不仅仅是对市场和技术的敏锐洞察,更多的是在复杂多变的环境中,如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享我多年经历和所学到的所以知识&a…

OpenCV学习 基础图像操作(十六):图像距离变换

基础原理 顾名思义,我们可以利用像素之间的距离作为对该像素的一种刻画,并将其运用到相应的计算之中。然而,在一幅图像之中,某种类型的像素并不是唯一的,因此我门常计算的是一类像素到另一类的最小距离,并…

工厂模式详情

一.介绍工厂模式的用途与特点 工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。定义工厂方法模式(Fatory Method Pattern)是指定义一个创建对象的接口,但让实现这个接口的类来决定实例…

npm install node-sass 安装失败的解决方案:利用国内镜像加速安装

在开发前端项目时,使用Sass作为CSS预处理器是很多开发者的选择。然而,在通过npm安装其Node.js绑定库node-sass时,一些开发者可能会遇到安装失败的问题,尤其是网络原因导致的下载缓慢或中断。本文将指导你如何通过更换为国内镜像源…

如何在测试/线上环境页面访问本地接口?

文章目录 一、前言二、分析三、搭建1、搭建nginx,监听http请求转发2、监听https请求转发 四、总结 一、前言 在工作中,开发完的接口,一般测试的话,基本是使用Postman,如果要到页面测试,就要发版进行测试&a…

《逆水寒》手游周年庆,热度不减反增引发热议

易采游戏网5月31日最新消息:随着数字娱乐时代的飞速发展,手游市场的竞争愈发激烈。在这样的大背景下,《逆水寒》手游以其独特的古风武侠世界和深度的社交体验,自上线以来便吸引了无数玩家的目光。如今,这款游戏迎来了它…

知识运维概述

文章目录 知识运维研究现状技术发展趋势 知识运维 由于构建全量的行业知识图谱成本很高,在真实的场景落地过程中,一般遵循小步快走、快速迭代的原则进行知识图谱的构建和逐步演化。知识运维是指在知识图谱初次构建完成之后,根据用户的使用反馈…

WSL2-Ubuntu22.04-配置

WSL2-Ubuntu22.04-配置 准备1. WSL相关命令[^1]2. WSL2-Ubuntu22.04可视化3. WSL2 设置 CUDA4. 设置OpenGL 本文介绍了WSL2的基本使用方法及可视化,着重介绍了GPU和OpenGL的设置。 准备 名称版本windows11wsl2CUDA12.5 1. WSL相关命令1 查看已安装的wsl distribut…

DevExpress开发WPF应用实现对话框总结

说明: 完整代码Github​(https://github.com/VinciYan/DXMessageBoxDemos.git)DevExpree v23.2.4(链接:https://pan.baidu.com/s/1eGWwCKAr8lJ_PBWZ_R6SkQ?pwd9jwc 提取码:9jwc)使用Visual St…

“手撕”链表的九道OJ习题

目录 1. 第一题 2. 第二题 3. 第三题 4. 第四题 5. 第五题 6. 第六题 7. 第七题 8. 第八题 9. 第九题 1. 第一题 删除链表中等于给定值 val 的所有节点。OJ链接 思路如下: 相当于链表的removeAll();制定prev和cur,prev记录前一个节点&#xff…

2021JSP普及组第三题:插入排序

2021JSP普及组第三题 题目: 思路: 题目要求排序后根据操作进行对应操作。 操作一需要显示某位置数据排序后的位置,所以需要定义结构体数组储存原数据的位置和数据本身排序后所得数据要根据原位置输出排序后的位置,所以建立一个新…

作业 递归应用

已完成&#xff1a;7 #include <iostream> using namespace std; long long f(long long,long long); int main(){long long n,m;cin>>n>>m;cout<<f(m,n);return 0; } long long f(long long a,long long b){if(a%b0){return b;}return f(b,a%b); } #i…

RedisSearch与Elasticsearch:技术对比与选择指南

码到三十五 &#xff1a; 个人主页 数据时代&#xff0c;全文搜索已经成为许多应用程序中不可或缺的一部分。RedisSearch和Elasticsearch是两个流行的搜索解决方案&#xff0c;它们各自具有独特的特点和优势。本文简单探讨一些RedisSearch和Elasticsearch之间的技术差异。 目录…

软件测试基础

目录 一.基础 1.概念 1.1 什么是软件测试&#xff1f; 1.2 什么是需求&#xff1f; 1.3 什么是测试用例&#xff1f; 1.4 为什么需要测试用例&#xff1f; 1.5 什么是BUG&#xff1f; 1.6 软件生命周期 2.开发模型 2.1 瀑布模型 2.2 螺旋模型 2.3 增量模型、迭代模型…

从零到一建设数据中台 - 关键技术汇总

一、数据中台关键技术汇总 语言框架&#xff1a;Java、Maven、Spring Boot 数据分布式采集&#xff1a;Flume、Sqoop、kettle 数据分布式存储&#xff1a;Hadoop HDFS 离线批处理计算&#xff1a;MapReduce、Spark、Flink 实时流式计算&#xff1a;Storm/Spark Streaming、…

(CPU/GPU)粒子继承贴图颜色发射

GetRandomInfo节点(复制贴进scratch pad Scripts) Begin Object Class/Script/NiagaraEditor.NiagaraClipboardContent Name"NiagaraClipboardContent_22" ExportPath/Script/NiagaraEditor.NiagaraClipboardContent"/Engine/Transient.NiagaraClipboardConten…

安装软件缺少dll文件怎么办,分享多种解决dll问题的方法

在计算机使用过程中&#xff0c;我们经常会遇到安装软件时提示缺少dll文件的问题。这种情况通常会导致软件无法正常运行或启动。为了解决这个问题&#xff0c;我总结了以下五种方法&#xff0c;希望对大家有所帮助。 一&#xff0c;了解DLL文件是什么 动态链接库&#xff08;D…