В моих JMS-приложениях мы используем временные очереди на Производителях, чтобы иметь возможность получать ответы от Потребительских приложений.
I я столкнулся с той же проблемой на моем конце, что упоминалось в этой теме: http://activemq.2283324.n4.nabble.com/jira-Created-AMQ-3336-Temporary-Destination-errors-on-HA-failover -in-broker-network-with-Failover-tt-td3551034.html # a3612738
Всякий раз, когда я перезапускал произвольный брокер в своей сети, я получал много подобных ошибок в журнале потребительских приложений при попытке отправить ответ на временная очередь:
javax.jms.InvalidDestinationException:
Cannot publish to a deleted Destination: temp-queue://ID:...
Затем я увидел там ответ Гэри, предлагающий использовать
jms.watchTopicAdvisories=false
в качестве параметра URL-адреса на клиентском brokerURL
. Я быстро изменил URL-адреса брокера моего клиента с помощью этого дополнительного параметра. Однако теперь я вижу подобные ошибки, когда перезапускаю свои брокеры в сети для этого тестирования аварийного переключения:
javax.jms.JMSException:
The destination temp-queue:
//ID:client.host-65070-1308610734958-2:1:1 does not exist.
Я использую версию ActiveMQ 5.5. А URL моего брокера клиента выглядит так:
failover:(tcp://amq-host1:61616,tcp://amq-host2.tred.aol.com:61616,tcp://amq-host3:61616,tcp://amq-host4:61616)?jms.useAsyncSend=true&timeout=5000&jms.watchTopicAdvisories=false
Кроме того, вот мой XML-код конфигурации activemq для одного из 4 брокеров: amq1.xml
Кто-нибудь может разобраться в этой проблеме и подсказать, какую ошибку я делаю в этой настройке.
Чтобы уточнить, как я выполняю запрос-ответ в моем коде: