scheduled-tasks - ActiveMQ 调度在 5.15.8 中被忽略
问题描述
我一直在使用 ActiveMQ 中的调度功能来延迟消息。但是,当从版本 5.9.0 切换到 5.15.8 时,突然延迟设置被忽略。有谁知道为什么?ActiveMQ 代理定义为
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="myBroker" dataDirectory="${activemq.data}" schedulerSupport="true">
在 5.9.0 和
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="myBroker" dataDirectory="${activemq.data}" schedulerSupport="true">
在 5.15.8 中。在我的 Java 代码中,延迟是通过设置的
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 120000);
如前所述,这在 5.9.0 版本中工作得非常好(即,两分钟后传递的消息),但在 5.15.8 中被完全忽略(即,立即传递的消息)。两个版本都使用相同的脚本启动,只是更改了相关路径。
比较 activemq.xml 文件,我看不到任何我认为重要的东西:
[servers]# diff apache-activemq-5.15.8/conf/activemq.xml apache-activemq-5.9.0/conf/activemq.xml
32c32
< <bean id="logQuery" class="io.fabric8.insight.log.log4j.Log4jLogQuery"
---
> <bean id="logQuery" class="org.fusesource.insight.log.log4j.Log4jLogQuery"
84c84
< <!--<persistenceAdapter>
---
> <persistenceAdapter>
86,93c86,87
< </persistenceAdapter>-->
< <persistenceAdapter>
< <jdbcPersistenceAdapter dataSource="#mssql-ds" lockDataSource="#mssql-ds-lock" lockKeepAlivePeriod="5000">
< <locker>
< <lease-database-locker lockAcquireSleepInterval="10000"/>
< </locker>
< </jdbcPersistenceAdapter>
< </persistenceAdapter>
---
> </persistenceAdapter>
>
解决方案
推荐阅读
- python - Python - 我正在尝试与 asyncio start_server 等待 TCP 流量同时运行主逻辑(游戏服务器)循环
- c# - 创建可合并优先级队列接口结构
- algorithm - 如何找到使用 BST 的孩子总和之间的最大差异?
- r - 在 r 中使用变量的 XTS 内部名称
- twitter-bootstrap - 如何使我的引导子菜单可见
- python - 如何将 Reddit 函数添加到我的 Python Discord Bot?
- algorithm - 如何为 A 和 B 找到 A%B 是非常大的数字(存储在字符串中)
- git - 强制 git 以本地配置的用户身份推送
- python-3.x - 字典中多个子列表的最小值/最大值
- angular - .NET Core Angular 7 服务器端渲染