我有 3 台装有 Zookeeper 和 ActiveMQ(linux)的复制机器。
我可以确认 zookeeper 工作正常,因为我可以看到它们的端口 (2888 和 3888) 通过 进行监听netstat
。问题在 ActiveMQ 端得到确认。
在从属机器上,一切似乎都运行良好,因为 ActiveMQ 没有记录任何错误或警告。但在主机上,由于堆栈跟踪,日志有所不同IllegalArgumentException
。
这是来自的错误信息活动队列日志:
ERROR | Error in thread 'ActiveMQ BrokerService[broker] Task-1'
java.lang.IllegalArgumentException: port out of range:-1
at java.net.InetSocketAddress.checkPort(InetSocketAddress.java:143)[:1.7.0_111]
at java.net.InetSocketAddress.<init>(InetSocketAddress.java:185)[:1.7.0_111]
at org.fusesource.hawtdispatch.transport.TcpTransportServer.<init>(TcpTransportServer.java:52)[hawtdispatch-transport-1.22.jar:1.22]
at org.apache.activemq.leveldb.replicated.MasterLevelDBStore.start_protocol_server(MasterLevelDBStore.scala:134)[activemq-leveldb-store-5.13.4.jar:5.13.4]
at org.apache.activemq.leveldb.replicated.MasterLevelDBStore.doStart(MasterLevelDBStore.scala:111)[activemq-leveldb-store-5.13.4.jar:5.13.4]
at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:55)[activemq-client-5.13.4.jar:5.13.4]
at org.apache.activemq.leveldb.replicated.ElectingLevelDBStore$$anonfun$start_master$1.apply$mcV$sp(ElectingLevelDBStore.scala:230)[activemq-leveldb-store-5.13.4.jar:5.13.4]
at org.fusesource.hawtdispatch.package$$anon$4.run(hawtdispatch.scala:330)[hawtdispatch-scala-2.11-1.22.jar:1.22]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_111]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_111]
有人能解释一下为什么我会收到这个错误以及如何修复它吗?
附加信息:我的 zookeeper 和 activemq 配置https://gist.github.com/kana0011/3ad1c960b9aa24b8af8d7b623c4cb2b3(省略部分基本保留默认)
答案1
我发现问题出在 beanbind
中的属性值上replicatedLevelDB
。
该值应为tcp://0.0.0.0:0
:(端口 0)
并不是:tcp://0.0.0.0
(没有设置端口)