Tag: failovercluster

ActiveMQ:如何在使用临时队列时处理代理故障转移

在我的JMS应用程序上,我们使用生产者上的临时队列来接收消费者应用程序的回复。 我在这个线程中提到了完全相同的问题: http : //activemq.2283324.n4.nabble.com/jira-Created-AMQ-3336-Temporary-Destination-errors-on-HA-failover-in -broker-networking与故障转移-TT-td3551034.html#a3612738 每当我在我的networking中重新启动一个任意的代理时,我在使用消息应用程序日志中收到许多像这样的错误,同时尝试将答复发送到临时队列: javax.jms.InvalidDestinationException: Cannot publish to a deleted Destination: temp-queue://ID:… 然后,我看到加里在那里build议使用的回应 jms.watchTopicAdvisories=false 作为客户端brokerURL上的url参数。 我立即用这个额外的参数改变了我的客户经纪人url。 但是,现在我看到像这样的错误,当我重新启动networking中的经纪人进行此故障转移testing: 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 另外这里是我的四个经纪人之一的activemqconfigurationXML: amq1.xml 这里有人可以看看这个问题,并build议我在这个设置中犯了什么错误。 更新: 进一步澄清我在我的代码中如何做请求 – 响应: 我已经使用每个生产者的目的地(即临时队列),并将其设置在每封邮件的回复标题中。 我已经在JMSCorrelationID标头中发送了每个消息的唯一关联标识符。 据我所知即使骆驼和Spring也在使用临时队列来请求响应机制。 唯一不同的是,Spring JMS实现为每个消息创build和销毁临时队列,而我为生产者的生命周期创build临时队列。 当客户端(生产者)应用程序closures时,此临时队列被销毁,或者当AMQ代理程序意识到没有活动的生产者与此临时队列连接时,此临时队列被销毁。 我已经在Producer端的每条消息上设置了一个消息过期,这样消息就不会在队列中被搁置太久(60秒)。