首页 > 解决方案 > 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>
>

标签: scheduled-tasksactivemq

解决方案


推荐阅读