在我的 ActiveMQ 客户端中,当我指定要连接的代理时,指定之间有什么区别
tcp://host:port
和
failover:(tcp://host:port)
我尝试停止和启动代理,在这两种情况下,客户端在重新启动时都会再次找到代理。我还没有尝试过消息流(我正在使用队列)或其他网络故障,看看是否有区别。
希望有人能给出明确的答案,因为我发现的文档有点含糊。
谢谢
在我的 ActiveMQ 客户端中,当我指定要连接的代理时,指定之间有什么区别
tcp://host:port
和
failover:(tcp://host:port)
我尝试停止和启动代理,在这两种情况下,客户端在重新启动时都会再次找到代理。我还没有尝试过消息流(我正在使用队列)或其他网络故障,看看是否有区别。
希望有人能给出明确的答案,因为我发现的文档有点含糊。
谢谢
如果您使用故障转移,那么当您失去与服务器的连接时,客户端库会进入重新连接循环。网络故障将从您的应用程序中隐藏。如果您不使用故障转移,那么当您失去连接时,您的应用程序将收到一个 JMS 错误,告诉您您失去了连接。
故障转移协议还允许您提供一些有用的连接参数。例如:
failover:(tcp://host:port)?jms.useAsyncSend=true&timeout=5000
如果代理不可用或没有响应,这里timeout=5000
将确保在 5 秒后退出初始连接尝试。
故障转移对于处理代理或系统故障的问题非常有用,并提供了持久性。
故障转移:(tcp://host1:port,tcp://host2:port,tcp://host3:port)?jms.useAsyncSend=true&randomize=false
在这里,如果您设置 randomize = true,那么它将同时使用所有 3 个代理,而 randomize = false 意味着一次使用一个代理,并且当正在运行的代理出现故障时,从休眠的代理中选择任何一个代理。并且 useAsyncSend = true 将以异步方式运行消息系统,这比同步方式要快。