我正在尝试在基于 Wildfly 11 的 Swarm 部署中设置一个 STOMP 接受器(使用 Swarm 2017.12.1 生成一个胖 WAR,通过 运行java -jar...
),让客户端向我发送进度消息,但无法让接受器加载,服务器启动时总是出现这个错误:
AMQ222203:类路径缺少协议 STOMP 的协议管理器,接受器 TransportConfiguration 上的协议被忽略(名称=stomp-acceptor,工厂=org-apache-activemq-artemis-core-remoting-impl-netty-NettyAcceptorFactory)?port=61613&protocols=跺脚
我正在使用现有的(但经过调整的)standalone-full.xml
配置来简化切换,到目前为止一切正常(Java EE 方面),但不是 STOMP 部分(不过 JMS 可以工作)。
我在 WAR 的 POM 中包含了一些依赖项来修复以前的类加载错误,但现在我已经没有想法了:
<dependency>
<groupid>org.apache.activemq</groupid>
<artifactid>activemq-rar</artifactid>
<version>5.15.2</version>
<type>rar</type>
</dependency>
<dependency>
<groupid>org.apache.activemq</groupid>
<artifactid>activemq-stomp</artifactid>
<version>5.15.2</version>
</dependency>
<dependency>
<groupid>io.netty</groupid>
<artifactid>netty-all</artifactid>
<version>4.1.5.Final</version>
</dependency>
(所以我依靠 Swarm 来找出所需的片段,这适用于其余部分)
我的消息部分配置如下所示:
<acceptor name="stomp-acceptor" factory-class="org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory">
<param name="protocols" value="STOMP"/>
<!--param name="connection-ttl" value="30000"/-->
<param name="host" value="${jboss.bind.address:127.0.0.1}"/>
<param name="port" value="61613"/>
<!--param name="stomp-enable-message-id" value="true"/-->
</acceptor>
我搜索了 Swarm、Artemis 和 SO,但没有找到可行的解决方案。会不会因为 Wildfly 11 使用的是 Artemis 1.5 而 Swarm 还不完全支持它,所以它无法工作?
到目前为止我发现一些有用的资源:
- Wildfly-Swarm 和通过资源适配器连接到外部 activemq:WFLYCTL0412
- Wildfly 11 连接到远程 Artemis ActiveMQ 服务器配置
- https://blog.dekstroza.io/wildfly-swarm-to-remote-wildfly-swarm-activemq-broker/
- 使用 Wildlfy 11 嵌入式 Apache Artemis 接收 MQTT 消息
- http://docs.wildfly-swarm.io/2017.12.1/#_messaging
- http://docs.wildfly-swarm.io/2017.12.1/#_sockets