Здравствуйте, мне нужна небольшая помощь в понимании специфического c сценария Active MQ. С самого начала я упоминаю, что использую эту библиотеку (Swift MQ) для связи с очередями Active MQ.
Контекст проблемы :
У меня есть 3 очереди (X, Y, DLQ) в моем приложении, где сообщение перемещается из очереди X в Y и из Y в DLQ. Это означает, что очередь Y - это очередь недоставленных сообщений для очереди X, а DLQ - это очередь недоставленных сообщений для Y. Пока все в порядке. Но когда сообщение помещается в очередь DLQ, отсюда оно больше не используется никакими другими процессами. И я бы sh установил время истечения срока для сообщений, которые поступают в эту очередь.
Поиск по inte rnet Я нашел этот поток как установить срок действия для ActiveMQ.DLQ queue? Очень полезно, но у меня сработал только один пример. Вот эти:
<policyEntry queue=">" producerFlowControl="false">
<deadLetterStrategy>
<sharedDeadLetterStrategy expiration="300000"/>
</deadLetterStrategy>
</policyEntry>
Вопросы для вас (читатель):
Из приведенного выше примера, когда я меняю queue=">"
на queue="DLQ"
. Цель состоит в том, чтобы применить эту политику истечения срока действия только к DLQ. Функциональность больше не делает то, что должна. Удалите сообщения, когда время истечет. И я не понимаю, почему это происходит и как мне получить больше логов. Я заглянул в консоль Active MQ и не нашел ни журналов, ни журналов IntelliJ.
Что еще я пробовал:
1) У меня было попробовал плагин, отбрасывающийDLQBrokerPlugin в моем файле конфигурации XML.
2) Я пробовал использовать другую запись политики, изменив приведенный выше код с помощью IndividualDeadLetterStrategy, AbstractDeadLetterStrategy, DiscardingDeadLetterStrategy.
3) Я пытался установите время истечения срока действия в самом сообщении, например:
AMQPTimestamp time = new AMQPTimestamp(getTwoWeeksFromNow());
amqpMessage.getProperties().setAbsoluteExpiryTime(time);
Ничего не сработало, за исключением примера политики, которая применяется ко всем очередям.
Спасибо.