Я использовал функцию планирования в 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>
>