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

这篇具有很好参考价值的文章主要介绍了[MQ] 延迟队列/延迟插件下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

📚📚系列专栏: 📖 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 上根据版本号下载插件

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

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

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

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

 安装插件并启用

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

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

 

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

安装成功

[MQ] 延迟队列/延迟插件下载 通过UI查看

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

🐬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());
    }

}

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

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生产-->张二发送成功");
    }

}

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

整个的流程就是生产者生产消息后,在交换机中停留指定的延迟时间,后发送到队列,消费者获取队列中的消息 文章来源地址https://www.toymoban.com/news/detail-428283.html

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

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

创建通用延时消息

到了这里,关于[MQ] 延迟队列/延迟插件下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Header Editor 插件下载、使用

    Header Editor 插件下载、使用 Header Editor是一款管理浏览器请求的Chrome扩展,包括修改请求头和响应头、重定向请求、取消请求。 访问:https://chromecj.com/web-development/2018-12/1661.html下载 下载完后把后缀改了解压,谷歌扩展工具导入即可 链接:https://pan.baidu.com/s/1EV6cY7TYQVgPjip3v-vhfQ

    2024年02月16日
    浏览(46)
  • 【idea】idea插件编写教程,博主idea插件已上架idea插件市场 欢迎下载

    前言:经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参, 例如日常开发中 我们使用Objects.equals去比较 status(入参),statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() ,再比如 我们比较一个订单code时 orderCode(入参),orderDTO(其它业务对象) 很容

    2024年01月17日
    浏览(43)
  • 如何解决VScode远程下载插件不了的问题?如何手动安装插件?

     当我们在使用VScode进行远程操作时,在安装我们所需要的一些插件时,可能会出现如下图,一直卡在安装中....明明只有小几十MB,却一连好几个小时都一动不动。像这种情况,就需要我们进行手动安装该插件。 插件网站: 方法一: 插件下载地址(1): 点击 方法二:在

    2024年02月17日
    浏览(47)
  • idea如何下载插件

    大家好,今天给大家分享在idea中如何下载插件 文章目录 一、idea内下载 二、插件市场 总结 第一种方式就是在idea内直接下载,适合在联网环境下进行下载,在这我们拿chinese中文翻译插件为例子,操作步骤如下: 首先点击设置(settings)  然后点击插件(plugins),在搜索栏搜

    2024年04月28日
    浏览(41)
  • 影刀下载,插件安装

    在影刀官网下载:www.yingdao.com 参考:  影刀插件安装各种方式  浏览器安装插件说明 - 影刀帮助中心 安装说明:驱动外置 Chrome 需要安装插件,并且保证此插件处于开启状态 方式一:用户头像-工具-自动化插件/方式二:新建或者打开一个应用》右上角三个点》自动化插件 》

    2024年02月15日
    浏览(85)
  • idea下载插件方法

    idea下载插件方法: 有了插件能够更好的开发~ 点击文件(对应未汉化的是file) 点击设置(对应未汉化的是settings) 搜索下载安装 然后重启idea即可

    2024年02月12日
    浏览(43)
  • 下载安装WindowBuilder插件教程

    大家都知道在做窗体程序的开发中,传统的Java语言在开发窗体应用程序中仅靠代码语句来实现对控件的控制显得不够灵活和准确,难以高效的开发具有良好用户界面的应用程序,所以我们应该寻找Java中可以拖拽控件来实现窗体绘制的插件。所幸的是找到了一种还算好用的插

    2024年02月07日
    浏览(43)
  • Stable Diffusion插件安装的3种方法,附4个插件下载地址!

    目录 1. 前言 2. Stable Diffusion插件安装 2.1. 扩展库安装 2.2. URL安装 2.2. 源码安装  3. Stable Diffusion插件推荐 3.1. prompt-all-in-one 提示词翻译  3.2. After Detailer 人脸及手部修复插件  3.3. Segment Anything 分割图片中的物体  3.4 Openpose Editor 姿态编辑  4. 总结         Stable Diffusion的强

    2024年04月17日
    浏览(69)
  • postman好用的插件有哪些,给出实例和插件下载地址、使用方法

    postman好用的插件有哪些,给出实例和插件下载地址、使用方法 Postman 是一个常用的高级 API测试工具,也可以用来测试 Web 应用程序。它提供了许多内置的功能和工具,同时还支持通过插件拓展其功能。下面是几个很实用的 Postman 插件: 该插件可以通过提供简单的配置,为

    2024年02月07日
    浏览(46)
  • 如何解决jenkins插件下载失败问题

    🍅 视频学习: 文末有免费的配套视频可观看 🍅  关注公众号【互联网杂货铺】,回复 1  ,免费获取软件测试全套资料,资料在手,涨薪更快 从 jenkins 官网上下载的 jenkins,在安装的过程中,会有安装插件一环: 第一个为默认安装,第二个为手动 选择默认安装之后,会遇

    2024年04月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包