Java 如果我想快速失败,ActiveMQ的最佳连接URI是什么?

Java 如果我想快速失败,ActiveMQ的最佳连接URI是什么?,java,message-queue,activemq,Java,Message Queue,Activemq,我在Java中使用ActiveMQ来记录传入的分析信标。理想情况下,如果队列发生故障或被锁定,我希望尽可能快地失败,在本地记录信标,然后返回到客户端而不挂起,然后稍后尝试重新连接 使用ActiveMQ时,该用例的最佳连接URI和URI参数是什么?我建议在您的用例中使用AMQ的故障转移传输。例如:尝试这种形式的URL(在AMQ 5.3版及以后版本中提供): 这只意味着尝试连接在JMS.host1、JMS.host2、JMS.host3上运行的JMS代理5秒,如果没有可用的连接,则向客户端返回一个错

我在Java中使用ActiveMQ来记录传入的分析信标。理想情况下,如果队列发生故障或被锁定,我希望尽可能快地失败,在本地记录信标,然后返回到客户端而不挂起,然后稍后尝试重新连接


使用ActiveMQ时,该用例的最佳连接URI和URI参数是什么?

我建议在您的用例中使用AMQ的故障转移传输。例如:尝试这种形式的URL(在AMQ 5.3版及以后版本中提供):

这只意味着尝试连接在JMS.host1、JMS.host2、JMS.host3上运行的JMS代理5秒,如果没有可用的连接,则向客户端返回一个错误。如果客户端断开与jms.host2的连接,它还将负责自动故障切换以连接到jms.host1或jms.host3


有关故障转移传输的文档,请参阅本页:

不幸的是,如果传输中断,URI是一个阻塞调用。它不会很快失败,只是无限期地阻塞。您注意到那个URL中的“timeout=5000”了吗?如果没有建立连接,这将导致发送调用在5秒后失败。连接不会被终止,因此您可以稍后尝试使用相同的连接发送消息。请检查我上面提供的链接。
failover:(tcp://jms.host1:61616,tcp://jms.host2:61616,tcp://jms.host3:61616)?timeout=5000