搭了个简单的activeMq的主从的集群,
3个服务器,只有主的那个是可以访问的,其他两个保持待机状态,
客户端使用failover方式连接,
如: activeMq.broker.url=failover:(tcp://192.168.1.117:61616,tcp://192.168.1.118:61616,tcp://192.168.1.115:61616)?randomize=false&timeout=3000
程序里有10个消息队列,大概10个消费者,每个消费者启动时都去连接activeMQ,
但是发现连接超级慢,很久才连上一个队列,10分钟才启动完~~
疯掉~~
尝试,只保留主服务器的地址,启动非常快,
加上一个不可访问的,就超级慢~~
搜了半天,没找到有用的,
后来看到了官网的tcp transport说明, http://activemq.apache.org/tcp-transport-reference.html 原来每个tcp连接后面还有参数的。
connectionTimeout默认竟然是30000毫秒,怪不得慢死~~
把连接参数改为
activeMq.broker.url=failover:(tcp://192.168.1.117:61616?connectionTimeout=2000,tcp://192.168.1.118:61616?connectionTimeout=2000,tcp://192.168.1.115:61616?connectionTimeout=2000)?randomize=false&timeout=3000
就OK了,尝试2秒,连不上就换下一个。 --------------------------------------------- 另一个问题是,这个连接activeMq默认是无限重试的, 会导致程序启动不起来, 不过我觉得就这样吧,没activeMq,启动起来也没用~~ 可参考这个: https://my.oschina.net/u/237688/blog/753938
|