1

將Wildfly 10.1 standalone-full-ha.xml與ActiveMQ Artemis 1.1.0一起使用。通過將該對ActiveMQ的配置啓用STOMP:基於https://spring.io/guides/gs/messaging-stomp-websocket/Wildfly 10.1羣集中的Spring websockets

<acceptor name="stomp-acceptor" factory-class="org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory"> 
    <param name="protocols" value="STOMP"/> 
    <param name="port" value="${stomp.port:61613}"/> 
</acceptor> 

部署樣品彈簧的WebSockets戰爭我已經在2個獨立的服務器,其能夠形成集羣此運行。我能當我拔下,下面的異常被拋出其他服務器上的WebSockets的一個連接到服務器和跨發送郵件,但是:

16:49:02,377 ERROR [org.apache.activemq.artemis.core.server] (Thread-7 (ActiveMQ-client-global-threads-926891052)) AMQ224037: cluster connection Failed to handle message: java.lang.IllegalStateException: Cannot find binding for ffaa538e-77c3-11e7-ba4b-7b9cb7ee40e2b7e6493a-77c3-11e7-ba4b-7b9cb7ee40e2 
     at org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionImpl$MessageFlowRecordImpl.doConsumerClosed(ClusterConnectionImpl.java:1319) 
     at org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionImpl$MessageFlowRecordImpl.handleNotificationMessage(ClusterConnectionImpl.java:1005) 
     at org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionImpl$MessageFlowRecordImpl.onMessage(ClusterConnectionImpl.java:974) 
     at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1018) 
     at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48) 
     at org.apache.activemq.artemis.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1145) 
     at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:103) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 

我也有Wildfly 11 Alpha和測試這個包括ActiveMQ Artemis 1.5.3,但每次斷開WebSocket時都會出現相同的錯誤。

我也得到了以下錯誤,當我關閉一臺服務器,但我不太在意這些,因爲它們只發生在關機期間:

17:11:03,747 ERROR [org.apache.activemq.artemis.core.server] (Thread-27 (ActiveMQ-server-or[email protected]5669232b-14602972)) AMQ224051: Failed to call notification listener: java.lang.IllegalStateException: No queue 0110e86e-77c4-11e7-a745-252881f696b4 
     at org.apache.activemq.artemis.core.postoffice.impl.PostOfficeImpl.onNotification(PostOfficeImpl.java:387) 
     at org.apache.activemq.artemis.core.server.management.impl.ManagementServiceImpl.sendNotification(ManagementServiceImpl.java:580) 
     at org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl.close(ServerConsumerImpl.java:437) 
     at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.doClose(ServerSessionImpl.java:354) 
     at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl$1.done(ServerSessionImpl.java:1191) 
     at org.apache.activemq.artemis.core.persistence.impl.journal.OperationContextImpl.executeOnCompletion(OperationContextImpl.java:161) 
     at org.apache.activemq.artemis.core.server.impl.ServerSessionImpl.close(ServerSessionImpl.java:1185) 
     at org.apache.activemq.artemis.core.protocol.stomp.StompProtocolManager$1.run(StompProtocolManager.java:276) 
     at org.apache.activemq.artemis.utils.OrderedExecutorFactory$OrderedExecutor$ExecutorTask.run(OrderedExecutorFactory.java:103) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 

17:11:03,784 ERROR [io.netty.util.concurrent.DefaultPromise.rejectedExecution] (globalEventExecutor-1-2) Failed to submit a listener notification task. Event loop shut down?: java.util.concurrent.RejectedExecutionException: event executor terminated 
     at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:821) 
     at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:327) 
     at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:320) 
     at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:746) 
     at io.netty.util.concurrent.DefaultPromise.safeExecute(DefaultPromise.java:760) 
     at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:428) 
     at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104) 
     at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:82) 
     at io.netty.channel.AbstractChannel$CloseFuture.setClosed(AbstractChannel.java:1058) 
     at io.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:686) 
     at io.netty.channel.AbstractChannel$AbstractUnsafe.access$700(AbstractChannel.java:419) 
     at io.netty.channel.AbstractChannel$AbstractUnsafe$5.run(AbstractChannel.java:646) 
     at io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:233) 
     at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) 
     at java.lang.Thread.run(Thread.java:745) 

17:11:03,797 WARN [io.netty.channel.AbstractChannel] (globalEventExecutor-1-2) Can't invoke task later as EventLoop rejected it: java.util.concurrent.RejectedExecutionException: event executor terminated 
     at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:821) 
     at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:327) 
     at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:320) 
     at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:746) 
     at io.netty.channel.AbstractChannel$AbstractUnsafe.invokeLater(AbstractChannel.java:931) 
     at io.netty.channel.AbstractChannel$AbstractUnsafe.access$900(AbstractChannel.java:419) 
     at io.netty.channel.AbstractChannel$AbstractUnsafe$5.run(AbstractChannel.java:649) 
     at io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:233) 
     at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) 
     at java.lang.Thread.run(Thread.java:745) 

是它與彈簧的WebSocket例子的問題嗎?

我是否需要在默認standalone-full-ha.xml中更改某些內容以使其在集羣中正常工作,而不會在客戶端斷開連接時拋出異常?

回答

0

Wild Art中的Artemis版本稍落後於最新的上游(1.5.3 vs 2.2.0)。你是否嘗試過使用一組獨立的Artemis 2.2.0節點?