我已經設置了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的故障轉移? –