1

Utilisation de Wildfly 10.1 standalone-full-ha.xml avec l'ActiveMQ Artemis 1.1.0 incluse. Activé STOMP en ajoutant ceci à la configuration ActiveMQ:Websockets de printemps sur un cluster Wildfly 10.1

<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> 

Déployé un échantillon de guerre websockets de printemps basé sur https://spring.io/guides/gs/messaging-stomp-websocket/

J'ai cette course sur 2 serveurs distincts qui sont capables de former un cluster. Je suis en mesure de se connecter aux deux serveurs et d'envoyer des messages à travers, mais quand je débranche l'un des websockets, l'exception suivante est lancée sur l'autre serveur:

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) 

J'ai également testé cela avec wildfly 11 Alpha et inclus ActiveMQ Artemis 1.5.3 mais je reçois la même erreur chaque fois que je déconnecte un socket Web.

Je reçois aussi les erreurs suivantes quand je l'arrêt d'un serveur, mais je suis moins préoccupé au sujet de ces car ils ne se produisent lors de l'arrêt:

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) 

est-il un problème avec l'exemple ressort websocket? Ai-je besoin de changer quelque chose dans le fichier standalone-full-ha.xml par défaut pour que cela fonctionne correctement sur un cluster, sans émettre d'exceptions sur la déconnexion du client?

Répondre

0

La version d'Artemis dans Wildfly est un peu en retard par rapport au dernier en amont (1.5.3 vs 2.2.0). Avez-vous essayé cela avec un cluster de nœuds Artemis 2.2.0 autonomes?