Как избежать получения очистки сообщений в activemq?
У меня есть приложение переднего плана (приложение A), которое выполняет запрос к приложению (приложение B) для данных через ActiveMQ (версия 5.15.8).
Когда я делаю запрос, который извлекает небольшой объем данных, все работает нормально, поскольку приложение A получает эти данные из приложения B и отображает их.
Однако когда приложение A делает запрос к приложению B (через amq), которое получает много данных, я продолжаю получать это сообщение purged (показано ниже) в ActiveMQ active.log, а затем приложение A никогда не получает данные ,
Следует отметить, что приложение B получает запрос от приложения A, затем получает запрошенные данные и перенаправляет их обратно в ActiveMQ (чтобы затем переслать в приложение A). Но после отправки данных в ActiveMQ появляется сообщение purge :
2020-03-12 16: 29: 03,738 | ИНФО | временная очередь: // ID: mcam443-P C -61788-1748020379598-6: 1: 1 при утилизации, очистка из 1 ожидающих сообщений : org. apache .activemq.broker.region.cursors. VMPendingMessageCursor@5d237edf | org. apache .activemq.broker.region.TempQueue | ActiveMQ BrokerService [activemqPrimary] Task-89
Вот мой раздел политики назначения файла activemq. xml file
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" expireMessagesPeriod="120000" producerFlowControl="true" memoryLimit="5mb">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="-1"/>
</pendingMessageLimitStrategy>
</policyEntry>
<policyEntry queue="D.>" expireMessagesPeriod="120000" producerFlowControl="true" memoryLimit="5mb">
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
<pendingMessageLimitStrategy>
<constantPendingMessageLimitStrategy limit="-1"/>
</pendingMessageLimitStrategy>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
Я установил expireMessagesPeriod в 4 минуты, и я вижу, что приложение B обычно отвечает в течение 2 минут. Так что, похоже, это не помогло.
Я также установил constantPendingMessageLimitStrategy равным -1, что должно отключить удаление сообщений (http://activemq.apache.org/slow-consumer-handling.html)
Снова очистка сообщение не появляется, когда приложение A делает запрос, который возвращает только небольшое количество данных.
Как мне избежать получения очистки данных по большим запросам? или вообще?