我一直在使用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.1>中的。 在我的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>
>