2016-04-30 117 views
0

我对ActiveMQ故障转移协议有两个问题。ActiveMQ故障转移连接url

问题1:当我使用以下网址与嵌套它不连接到ActiveMQ。

failover:(tcp://192.168.1.111:61616)?nested.jms.useAsyncSend=true&initialReconnectDelay=1000&maxReconnectAttempts=-1 

问题2:以下网址工作正常。它也在第一次重新启动时重新连接到ActiveMQ,但是当我第二次关闭ActiveMQ时,Java程序终止并且没有任何异常。

failover:(tcp://192.168.1.111:61616)?jms.useAsyncSend=true&initialReconnectDelay=1000&maxReconnectAttempts=-1 

ActiveMQ的版本:5.10.0

参考:http://activemq.apache.org/failover-transport-reference.html

回答

0

嵌套前缀仅适用于应用到内部TCP选项有用/ SSL故障转移URI内传送,或者可能以代理使用多播发现等方式发现的地址。它们不适用于连接级别选项(例如以“jms。”开头的选项)。如果设置为你的第一个URI是正确如下:

failover:(tcp://192.168.1.111:61616)?jms.useAsyncSend=true&initialReconnectDelay=1000 

这是因为jms.useAsyncSend选项适用的整个连接,而不是里面的给定TCP运输为主的单一连接故障转移 URI。

嵌套选项会之类的东西soTimeouttcpNoDelay

你并不需要尝试重新设置尝试无限,因为这是,现在仍然是默认的前提,只有当你想将其限制为某些固定次数的尝试,您是否需要设置此选项。

如果您的应用程序在故障转移重新连接周期期间关闭,那么我的猜测是您依赖ActiveMQ库来维护至少一个非守护线程以保持活动状态,这是一个糟糕的假设,依靠任何第三方保持你的应用程序运行的一方通常是不好的做法,你应该让自己的设计强制应用程序保持运行,直到你真的希望它关闭。

相关问题