我已经设置了ActiveMQ多个实例,以实现Windows主从模式下的故障转移。 虽然设置相同,我只是在bin文件夹下创建3个实例,无需更改任何端口,并逐一启动所有3个实例。一次成为主人,剩下的人在奴隶模式下,直到我停止主人实例。在同一台Linux机器上使用主从模式下的多个实例进行activemq故障转移
现在我正试图在Linux环境中实现相同的功能。第一个实例成功启动,但当我在另一个窗口中启动第二个实例时,它会抛出错误:
错误|无法启动Apache ActiveMQ([instance2,ID:132vm6-57227-1478597606120-0:1]),java.io.IOException:传输连接器无法在JMX中注册:java.io.IOException:无法绑定到服务器套接字: tcp://0.0.0.0:61616?maximumConnections = 1000 & wireFormat.maxFrameSize = 104857600由于:java.net.BindException:地址已被使用) INFO | Apache ActiveMQ 5.14.0(instance2,ID:132vm6-57227-1478597606120-0:1)正在关闭 INFO |连接器openwire停止 INFO |连接器amqp已停止 INFO |连接器跺脚停止 INFO |连接器mqtt已停止 INFO |连接器ws停止 INFO | PListStore:[/ opt/apache-activemq-5.14.0/bin/instance2/data/instance2/tmp_storage]已停止 INFO |停止异步队列任务 INFO |停止异步主题任务 INFO |停止KahaDB 信息| Apache ActiveMQ 5.14.0(instance2,ID:132vm6-57227-1478597606120-0:1)正常运行时间0.585秒 INFO | Apache ActiveMQ 5.14.0(instance2,ID:132vm6-57227-1478597606120-0:1)is shutdown INFO |关闭[email protected]:启动日期[Tue Nov 08 15:03:24 IST 2016];上下文层次结构的根 WARN |在上下文关闭时从LifecycleProcessor抛出的异常 java.lang.IllegalStateException:未初始化LifecycleProcessor - 在通过上下文调用生命周期方法之前调用'refresh':[email protected]:startup date [Tue Nov 08 15 :2016年03月24日IST];上下文层次结构的根目录 at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:357)[spring-context-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.context .support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:884)[spring-context-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java: 843)[spring-context-4.1.9.RELEASE.jar:4.1.9.RELEASE] at org.apache.activemq.hooks.SpringContextHook.run(SpringContextHook.java:30)[activemq-spring-5.14.0。 jar:5.14.0] at org.apache.activemq.broker.BrokerService.stop(BrokerService.java:875)[activemq-broker-5.14.0.jar:5.14.0] at org.apache.activemq.xbean .XBeanBrokerService.stop(XBeanBr okerService.java:122)[activemq-spring-5.14.0.jar:5.14.0] at org.apache.activemq.broker.BrokerService.start(BrokerService.java:629)[activemq-broker-5.14.0。 jar:5.14.0] at org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:73)[activemq-spring-5.14.0.jar:5.14.0] at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)[:1.7.0_65] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_65] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[: 1.7.0_65] at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_65]
我正在使用ActiveMQ 5.14版本。 如果有人遇到类似问题,请提供您的意见。
嗨@Jakub ..感谢您的输入,我已经测试过您提及的设置以及它对我的工作。但是,当我尝试在不更改端口的情况下运行多个实例时,它在Linux中引发错误,但通过命令行在Windows中正常工作。想知道如果这可以在Windows中工作,那么为什么不在Linux? – JavaSeeker
有可能您的数据目录指向每个Linux代理安装中的不同位置。因此,他们都试图同时出现(即没有主从)。在Windows上,听起来好像你设置正确。经纪人只有认为自己处于“主”模式时才会开放其端口。 –
@Jakub,你可以发布样本activemq。 xml的故障转移? –