[MQ] 延迟队列/延迟插件下载

7 篇文章 0 订阅
订阅专栏

✨✨个人主页:沫洺的主页

📚📚系列专栏: 📖  JavaWeb专栏📖  JavaSE专栏 📖  Java基础专栏📖 vue3专栏 

                           📖 MyBatis专栏📖 Spring专栏📖 SpringMVC专栏📖 SpringBoot专栏

                           📖 Docker专栏📖 Reids专栏📖 MQ专栏📖 SpringCloud专栏     

💖💖如果文章对你有所帮助请留下三连✨✨

🐕延迟队列

使用rabbitmq的延时队列插件,实现同一个队列中有多个不同超时时间的消息,并按时间超时顺序出队

🦢下载延迟插件

在 RabbitMQ 的 3.5.7 版本之后,提供了一个插件(rabbitmq-delayed-message-exchange)来实现延迟队列 ,同时需保证 Erlang/OPT 版本为 18.0 之后。

我这里 MQ 的版本是 3.10.5,现在去 GitHub 上根据版本号下载插件

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases 

 安装插件并启用

下载完成后直接把插件放在 /root/211 目录,然后拷贝到容器内plugins目录下(rabbitmq是容器的name,也可以使用容器id)

 

docker cp /home/211/rabbitmq_delayed_message_exchange-3.10.0.ez rabbitmq:/plugins

进入 Docker 容器

docker exec -it rabbitmq /bin/bash

在plugins内启用插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

退出容器

exit

重启 RabbitMQ

docker restart rabbitmq

安装成功

 通过UI查看

🐬SpringBoot使用延迟队列

消费者

自定义交换机CustomExchange

@Component
public class DelayConsumer {
    private static final String ENAME = "211-DelayExchage-01";
    private static final String QNAME1 = "211-DelayQueue-01";

    //自定义交换机
    @Bean
    public CustomExchange customExchange() {
        HashMap<String, Object> args = new HashMap<>();
        args.put("x-delayed-type","direct");
        //延迟交换机
        return new CustomExchange(ENAME, "x-delayed-message", true, false, args);
    }

    //定义一个队列
    @Bean
    public Queue queue() {
        return QueueBuilder.durable(QNAME1).build();
    }

    //创建队列和交换机的绑定关系
    @Bean
    public Binding binding1() {
        return BindingBuilder.bind(queue()).to(customExchange()).with("diancan").noargs();
    }

    //消费者
    @RabbitHandler
    @RabbitListener(queues = QNAME1)
    public void process1(UserRegisterOk userRegisterOk) {
        System.out.println(DateUtil.format(DateUtil.date(),"HH:mm:ss") +"消费者收到:" + userRegisterOk.getName() + "," + userRegisterOk.getHeight());
    }

}

messages delayed:0

默认延迟时间0s

生产者

设置延迟时间

        message -> {
            //设置消息延迟时间5秒,5秒之后投递给队列 针对的是交换机
            message.getMessageProperties().setDelay(5*1000);
            return message;
        }
@Component
public class DelayProducer {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    public void sendMessage(){
        //延迟5秒
        UserRegisterOk userRegisterOk1 = UserRegisterOk.builder().name("张一").phone("123456").height("1.8.5").build();
        //要将对象序列化,转成字符串,使用消息转换器MessageConverter
        rabbitTemplate.convertAndSend("211-DelayExchage-01","diancan",userRegisterOk1,message -> {
            message.getMessageProperties().setDelay(5*1000);
            return message;
        });
        System.out.println(DateUtil.format(DateUtil.date(),"HH:mm:ss") +"生产者1生产-->张一发送成功");
        
        //延迟8秒
        UserRegisterOk userRegisterOk2 = UserRegisterOk.builder().name("张二").phone("123456").height("1.8.5").build();
        //要将对象序列化,转成字符串,使用消息转换器MessageConverter
        rabbitTemplate.convertAndSend("211-DelayExchage-01","diancan",userRegisterOk2,message -> {
            message.getMessageProperties().setDelay(8*1000);
            return message;
        });
        System.out.println(DateUtil.format(DateUtil.date(),"HH:mm:ss") +"生产者2生产-->张二发送成功");
    }

}

整个的流程就是生产者生产消息后,在交换机中停留指定的延迟时间,后发送到队列,消费者获取队列中的消息 

补充延迟队列不常用的两种方式

创建具有超时功能且绑定死信交换机的消息队列

创建通用延时消息

rabbitmq_delayed_message_exchange-3.8.0.zip
05-07
安装一个插件即可:https://www.rabbitmq.com/community-plugins.html ,下载rabbitmq_delayed_message_exchange插件,然后解压放置到RabbitMQ插件目录。 接下来,进入RabbitMQ的安装目录下的sbin目录,执行下面命令让该插件生效,然后重启RabbitMQrabbitmq-plugins enable rabbitmq_delayed_message_exchange
rabbitmq_delayed_3.6.x延迟插件.rar
12-23
rabbitmq3.6.x延迟队列插件下载
github中RabbitMq延迟插件rabbitmq-delayed-message-exchange查找并下载
夏已微凉、
06-26 1759
github下载延迟插件
rabbitmq安装延时插件
最新发布
相关项目可以查看https://gitee.com/fan-pl或https://github.com/fpl1116
04-09 646
rabbitmq安装延时插件
linux 下rabbitmq 下载与安装
Bug制造者
08-05 3646
rabbitmq 是erlang 语言开发的;下载不同版本的rabbitmq 需要不同版本的erlang 上图展示的很清楚 ,看看自己需要什么版本 erlang 24.x 版本不支持centOS8,我的服务器是centOS7.x 所以下载 23.x 的版本 1.下载erlang 下载地址 : 官网下载地址 :https://packagecloud.io/rabbitmq/erlang github下载地址 :https://...
最新版RabbitMQ delayed_message_exchange插件安装
socilents的博客
01-20 3775
最新版RabbitMQ delayed_message_exchange插件安装1. 下载delayed_message_exchange 3.9.02.复制到rabbitmq plugins目录下3. 安装4.问题及其他 1. 下载delayed_message_exchange 3.9.0 下载地址 2.复制到rabbitmq plugins目录下 复制到 \rabbitMQ\rabbitmq_server-3.9.3\plugins 的目录下,这里着重说一下,我们下载的是.ez文件,如下图所示,直
redis-stream-queue:redis流v5 +上的消息队列。 双流延迟队列
02-15
Redis流队列 Redis流v5 +上的消息队列。 redis v5 +流,ES6 __keyevent@5__:expired保证__keyevent@5__:expired消息( __keyevent@5__:expired )不丢失 ...const mq = RedisQueue . init ( { client } ) const sKey =
docker安装RabbitMQ及安装延迟插件.doc
07-10
"Docker 安装 RabbitMQ 及安装延迟插件" 本文将详细介绍如何使用 Docker 安装 RabbitMQ ...本文详细介绍了如何使用 Docker 安装 RabbitMQ 及安装延迟插件,并解释了 MQ 的概念、优点和安装步骤,希望对读者有所帮助。
SpringBoot集成RabbitMQ延时队列,自定义延时时间Demo
09-16
该示例通过 rabbitmq_delayed_message_exchange 插件实现自定义延时时间的延时队列。 示例是纯净的,只引入了需要的架包 启动示例时,请确保MQ已经安装了延时插件(附件里带有插件及安装说明)以及示例的MQ相关的配置...
毕业设计基于SSM/Springboot的商城项目源码+数据库,一个简单的商城,界面友好
03-17
毕业设计基于SSM/Springboot的商城项目,一个简单...死信队列处理延迟任务 用户下单1小时后,自动检查订单是否发货 html导出pdf - wkhtmltopdf插件 [已实现] 增加货物自提功能,输入验证码后用户自提 有两个版本 一个s
RabbitMQ延迟消息插件.zip
07-11
RabbitMQ实现延迟消息插件rabbitmq_delayed_message_exchange-3.8.0
rabbitmq3.8安装包及消息插件.rar
03-21
这是liunx下的rabbitmq-server-generic-unix-3.8.2.tar.xz及消息插件rabbitmq_delayed_message_exchange-3.8.0.ez,欢迎各位下载,希望能对你们有所帮助!
rabbitmq_delayed_message_exchange-3.9.0.zip
08-19
截止2021.08.19日适配官网最新版rabbitmq3.9.3的消息延时队列插件,包内含有rabbitmq_delayed_message_exchange-3.9.0.ez格式、zip格式、tar.gz格式安装包任你选择~~
使用RabbitMq实现延迟队列
wang_97的博客
04-21 765
spring:rabbitmq:host: IP地址 // 若在本地:127.0.0.1username: guest //默认的账号密码port: 5672二、将下载的文件放入rabbitMq目录下的plugins文件夹中三、进入控制台,进入rabbitMq目录下的sbin目录下,执行:rabbitmq-plugins enable rabbitmq_delayed_message_exchange,开启插件支持四、重启rabbitMq
RabbitMQRabbitMQ和Erlang下载与安装步骤—2023超详细最新版
四季轮换叶,一路招摇胜
04-04 8647
RabbitMQRabbitMQ和Erlang下载与安装步骤—2023超详细最新版
RabbitMQ延迟队列实现 ( 插件版 )
想好了就去做吧 即便失败了 至少这条路上留下了你的脚印
07-12 3735
安装完rabbitmq-delayed-message-exchange插件后,会生成一个新的Exchange类型 x-delayed-message ,该类型消息支持延迟投递机制。接收到消息后并不会立即将消息投递至目标队列,而是存储在mnesia table(一个分布式数据库)中,然后检测消息延迟时间,如果达到可投递时间( 过期时间 )后,将其通过 x-delayed-type 类型标记的交换机投递到目标队列中。...
windows下rabbitmq安装延时插件(处理各种问题)
qq_51269815的博客
09-01 1702
windows下rabbitmq安装延时插件(处理各种问题)
2023最新版本RabbitMQ下载安装教程
MarcoPro的博客
03-04 4171
RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。主要用于在进程、应用程序和服务器之间交换数据,可以通过插件支持进行扩展,支持许多协议,并提供高性能、可靠性、集群和高可用队列。AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。
mq延迟队列代码实现
11-05
MQ延迟队列的代码实现可以分为以下几个步骤: 1. 创建延迟队列RabbitMQ中,需要先安装rabbitmq_delayed_message_exchange插件,然后创建一个类型为x-delayed-message的Exchange,代码如下: ```java Map<String, Object> args = new HashMap<>(); args.put("x-delayed-type", "direct"); channel.exchangeDeclare("delayed_exchange", "x-delayed-message", true, false, args); ``` 2. 发送延迟消息 在发送消息时,需要设置消息的过期时间(TTL)和消息头中的x-delay属性,代码如下: ```java AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder(); builder.expiration("10000");//设置消息的过期时间为10秒 builder.headers(Collections.singletonMap("x-delay", 5000));//设置消息头中的x-delay属性为5秒 channel.basicPublish("delayed_exchange", "delayed_queue", builder.build(), "Hello, delayed message!".getBytes()); ``` 3. 接收延迟消息 在接收消息时,需要创建一个绑定了延迟队列的消费者,代码如下: ```java channel.queueBind("delayed_queue", "delayed_exchange", "delayed_queue"); channel.basicConsume("delayed_queue", true, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { String message = new String(body, "UTF-8"); System.out.println("Received delayed message: " + message); } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 同时安装多个版本的JDK(JDK1.8和JDK17)并配置环境变量 16760
  • [vue3] 使用ElementPlus页面布局搭建架子 6319
  • 虚拟机安装 ubuntu server 5582
  • IDEA快捷键大全及修改IDEA快捷键 5548
  • [vue3] Tree/TreeSelect树形控件使用 5448

分类专栏

  • Linux 8篇
  • Docker 2篇
  • SpringCloud 11篇
  • Vue3 19篇
  • Redis 6篇
  • SpringBoot 30篇
  • JavaSE 20篇
  • Git 2篇
  • MQ 7篇
  • Java基础 13篇
  • MyBatis 8篇
  • Spring 5篇
  • SpringMVC 10篇
  • JavaWeb 13篇

最新评论

  • 同时安装多个版本的JDK(JDK1.8和JDK17)并配置环境变量

    mikazukink: 感谢老哥,我检查一下系统变量里面那个path才发现第二点的,卡了很久

  • 同时安装多个版本的JDK(JDK1.8和JDK17)并配置环境变量

    麋鹿夸特罗: 搞了一下午终于解决了,谢谢老哥

  • [vue3] 统一页面导航标签

    灰灰_Glory: 手动切换路径时 对应的标签导航卡没显示出来 应该开启立即侦听 或者使用watchEffect

  • [vue3] 统一页面导航标签

    灰灰_Glory: /* 切换到高亮的路由 */ tabChange(editableTabsValue.value)

  • [vue3] 统一页面导航标签

    灰灰_Glory: tagRemove函数最后是不是还要加一个路由跳转。实现当删除一个标签时高亮切换到附近的标签 同时路由跳转到 高亮那个那个标签所在的路径

大家在看

  • C++用扩充的结构体类型求复数的绝对值
  • 在Idea中隐藏指定文件/文件夹 130
  • mysqladmin——MySQL Server管理程序(二)
  • DCF协议详解
  • mysqladmin——MySQL Server管理程序(一) 378

最新文章

  • [Linux] 常用命令--文件操作grep/nl/more/less/head tail/set
  • [Linux] 常用命令--版本信息/关机重启/目录/文件操作
  • [Linux] 防火墙
2022年139篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沫洺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码民治网站搜索优化永湖如何制作网站盐田网站推广工具龙华标王塘坑设计网站惠州营销型网站建设龙华百度网站优化松岗网络广告推广木棉湾网络广告推广同乐百度seo双龙seo网站推广惠州百搜词包同乐网站开发东莞seo优化坪地SEO按天计费坪地百度竞价坂田关键词排名包年推广福田百度竞价石岩网站设计石岩关键词按天扣费双龙百度网站优化同乐网站优化大鹏SEO按天计费光明企业网站制作宝安网站推广系统爱联营销型网站建设坪山网站优化吉祥关键词排名大运网站改版爱联百度竞价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化