最近在做的项目中有一个业务涉及到了订单的有效期的问题(即订单达到一定的时间未支付完成就让该订单失效),于是就想到了延时队列的方式,由于项目采用的是activemq,所以就写了个activemq延时队列代码如下:

发送方代码如下:

    /*** 发送延迟消息* @param msg* @param delay*/public void send(Queue queue, String msg, long delay) {_log.info("发送MQ延时消息:msg={},delay={}", msg, delay);jmsTemplate.send(queue, new MessageCreator() {public Message createMessage(Session session) throws JMSException {TextMessage tm = session.createTextMessage(msg);tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);return tm;}});}

接收方代码如下:

 @JmsListener(destination = MqConfig.DELAY_ORDER_QUEUE_NAME)@Async("mqExecutor")public void receive(String orderId) {String logPrefix = "【订单过期延时队列】";if (StringUtils.isEmpty(orderId)) {return;}_log.info("{}接收消息:payOrderId={}", logPrefix, orderId);//@todo }

然鹅,一切并没有如想象中那么顺利,订单发送到延时队列后立刻就被消费到了。。。

最后在网上的搜索过程中去查看了一下官方的文档, linux 版的activemq 和window 下的mq 没有开启延时功能这时需要我们去mq 的配置文件中去将mq 的延时功能打开 ,巨坑啊。。。。

开启方式如下:

在mq 的安装目录下 的conf/activemq.xml 

在配置文件的40 行里加上

schedulerSupport="true"

效果如下:

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulerSupport="true">

将修改的文件保存,服务重启,mq 的延时功能就可以正常执行了

activemq 延时队列以及不生效问题相关推荐

  1. SpringBoot集成ActiveMq消息队列实现即时和延迟处理

    原文链接:https://blog.csdn.net/My_harbor/article/details/81328727 一.安装ActiveMq 具体安装步骤:自己谷歌去 二.新建springbo ...

  2. 贼好用,冰河再次升级了这款开源的精准定时任务和延时队列框架!!

    写在前面 在实际工作中,很多小伙伴在开发定时任务时,会采取定时扫描数据表的方式实现.然而,这种方式存在着重大的缺陷:如果数据量大的话,频繁的扫描数据表会对数据库造成巨大的压力:难以支撑大规模的分布式定 ...

  3. 兔老大的系统设计(二)定时系统(延时队列)

    之前文章: 兔老大的系统设计(一)健康度系统 一.背景 延迟队列的应用场景非常广泛,如客户主动操作: 股票定投 顾客预约场景 会员定时续费/缴费 CSDN定时发布 或系统内部操作: 订单成功后,在30 ...

  4. 【SpringBoot】43、SpringBoot中整合RabbitMQ实现延时队列(延时插件篇)

    死信队列实现篇,参考文章:[SpringBoot]60.SpringBoot中整合RabbitMQ实现延时队列(死信队列篇) 一.介绍 1.什么是延时队列? 延时队列即就是放置在该队列里面的消息是不需 ...

  5. RabbitMQ真延时队列实现消息提醒功能

    RabbitMQ真延时队列实现消息提醒功能 一.需求场景 用户可以制定多个计划,同时可给该计划设置是否需要到点提醒,且中途可以取消提醒或修改提醒时间. 二.需要解决的问题 学习过rabbitmq的同学 ...

  6. 基于Redis实现延时队列

    文章目录 理论介绍 代码实现 理论介绍 首先贴图来说明redis是如何实现延时队列的 当用户发送一个消息请求给服务器后台的时候,服务器会检测这条消息是否需要进行延时处理,如果需要就放入到延时队列中,由 ...

  7. SpringBoot 整合:Redis延时队列的简单实现(基于有赞的设计)

    点击关注公众号,Java干货及时送达 来源:blog.csdn.net/qq330983778/article/details/99341671 设计 之前学习Redis的时候发现有赞团队之前分享过一 ...

  8. 怎么设计一个合适的延时队列?

    [文章来源]https://sourl.cn/pcgvTp 延时队列技术调研 项目背景 延迟队列,它是一种带有延迟功能的消息队列,目前工作中有几处需延时处理的应用场景. 可选技术参考 kafka 考虑 ...

  9. 一口气说出 6种 延时队列的实现方案,大厂offer稳稳的

    下边会介绍多种实现延时队列的思路,文末提供有几种实现方式的 github地址.其实哪种方式都没有绝对的好与坏,只是看把它用在什么业务场景中,技术这东西没有最好的只有最合适的. 一.延时队列的应用 什么 ...

最新文章

  1. python和c++哪个好找工作-python和C++语言有何优缺点?哪个更适合人工智能?
  2. cursor的moveToNext()与moveToFirst()
  3. php strtotime 和 date 日期操作
  4. 移动端H5图片上传的那些坑
  5. hdu 3480 斜率dp
  6. Linux环境 Oracle 监听和服务 日常操作
  7. 如何在Ubuntu中使用root账号登录(新增Ubuntu12.04/14.04)?
  8. Cocos2d-x的Android.mk自动生成
  9. Codeforces Round #565 (div. 3)
  10. java steam_Java,Steam控制器和我
  11. 单片机通过串口与电脑通信
  12. 使用多种AI算法玩方格迷宫——基于Value的RL算法 【开源】
  13. imac html5播放器,超给力的五款Mac最佳高清音乐播放器
  14. Simultaneously Localize, Segment and Rank the Camouflaged Objects阅读笔记
  15. 雷石服务器系统怎么设置分辨率,雷石传奇改惊艳触摸屏不能校准 触摸不准问题?...
  16. SuperMap GIS的TIN地形数据优化
  17. windows下discus的搭建
  18. 客户端命令行工具 - 接口调试神器 HTTPie
  19. 新手程序员如何提升自己的编程能力
  20. 彻底清除已删除的文件

热门文章

  1. 功率谱 幅值谱_疲劳损伤谱(FDS)的基本原理
  2. cactiez mysql_cactiez使用mysql数据库出现以下报错:“[ERROR] /usr/sbin/mysqld”
  3. [js高手之路]this知多少
  4. 漫谈数据仓库之维度建模
  5. A summary of the post “How I explained OOD to my wife
  6. C# + .net下使用serialPort做串口开发 1
  7. js 获取url多个参数
  8. anaconda更新python版本mac_macos - 如何使用conda升级到Python 3.6?
  9. wpfdiagram 学习 教学_开启双自主学习模式 助力学生生命成长——长清湖实验学校开展“双自主合作学习”教学模式...
  10. @javax.inject.Inject,新的注入依赖规范