All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!
ActiveMQ默认会扫描局域网范围内的其他Broker
上一篇 /
下一篇 2010-11-13 19:25:37
/ 个人分类:Java
在帮同学搭建Napoli环境时,需要启动一些消息队列,用到到了ActiveMQ.Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns provider.http://activemq.apache.org/ 发生一个问题,启动在qa-qd-61-150机器上的ActiveMQ时,提示错误,显示去连接tcp://qa-qd-61-151:616616,由于没有配置这个主机名关于这个主机名"qa-qd-61-151"的路由,所以启动报错,启动不成功。试了一下,在青岛测试机房的172.29.61.*测试机上,运行activeMQ都启动不了,提示相同的错误。我到处找原因:是否系统里面配置"qa-qd-61-151"的hostname,但是都没有的,hostname都是现实正常,并非是"qa-qd-61-151"。甚至,为了这个,我都把ActiveMQ的源代码下载下来阅读了,可根据日志信息,grep找到是哪个Class抛出的异常。还是没怎么搞懂,为啥会这样。 后来,只得在本地/etc/hosts文件中配置了到"qa-qd-61-151"的路由,才将qa-qd-61-150这台机上的ActiveMQ启动了;然后,当我试图在qa-qd-61-141上没启动ActiveMQ时,它提示去连接qa-qd-61-150/qa-qd-61-151这两台机的端口了。这时,我忽然想到,它肯定去扫描了局域网,否则它根本不知道局域网内有哪几台机启动着ActiveMQ。 最后,我终于在apache-activemq-5.2.0/conf/activemq.xml中找到了相应的配置说明,如下:<networkConnectors> <!--by default just auto discover the other brokers--> <networkConnector name="default-nc" uri="multicast://default"/> <!-- Example of a static configuration: <networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/> --> </networkConnectors>
|
所以,它默认会根据61616端口去扫描广播地址范围内的其他broker,找到了就试图连接上去(我看了下广播地为:172.29.61.255);而且获取到的其他broker都是hostname,如果没有到其他broker主机名的路由,就会报错。我们只需要将上面的这一段全部注释即可,用"<!-- -->"来注释,注意这个注释里面不能再包含"--"否则XML解析时会报错。 哎,找了半天原因,最后还是在它本身的配置中找到了,找问题时,还是得把自身配置研究清楚啊。
收藏
举报
TAG:
ActiveMQ
消息队列