Spring Boot + RabbitMQ + rabbitmq_delayed_message_exchange插件实现延迟队列

本文介绍了使用Spring Boot集成RabbitMQ和rabbitmq_delayed_message_exchange插件来实现延迟消息推送的解决方案。通过这种方式,可以避免持续轮询带来的资源消耗,并且能确保队列中的消息按照到期时间先后顺序进行处理。详细步骤包括:安装erlang和rabbitmq,下载并启用rabbitmq_delayed_message_exchange插件,以及在Spring Boot项目中配置相关依赖和组件。
摘要由CSDN通过智能技术生成

最近在实现一个业务,就是需要做到消息延迟推送,在Java 多线程并发开发过程中,了解到DelayQueue类的:是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。然后再开一个扫描线程去轮询,就可以实现延迟消息的处理了,但是这样子做有一个弊端,就是得开一个线程时刻轮询,比较好资源,于是就寻找到了另外一种解决方案,现在就开始做下记录分享

解决方案就是RabbitMQ + rabbitmq_delayed_message_exchange插件(这种解决方案的好处还有就是可以解决队列先进先出的情况,比如第一个进到队列的到期时间是30分钟,第二个进入队列的到期时间是20分钟,但是由于队列的先进先出原则,第二个进入的会被阻塞了,等到第一个到期了才会被一起延迟处理)

  1. 安装erlang环境以及rabbitmq(这一步网上教程很多,跳过)
  2. 下载rabbitmq_delayed_message_exchange,官网地址 https://www.rabbitmq.com/community-plugins.htm
  3. 先解压,然后放置到rabbitmq安装的路径下的plugins文件夹中
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值