【发布时间】:2018-06-15 08:21:58
【问题描述】:
我正在尝试在基于 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)?端口=61613&protocols=STOMP
我正在使用现有的(但经过调整的)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 and connection to external activemq via resource adapter: WFLYCTL0412
- Wildfly 11 connection to remote Artemis ActiveMQ server configuration
- https://blog.dekstroza.io/wildfly-swarm-to-remote-wildfly-swarm-activemq-broker/
- Receiving MQTT message with Wildlfy 11 embedded Apache Artemis
- http://docs.wildfly-swarm.io/2017.12.1/#_messaging
- http://docs.wildfly-swarm.io/2017.12.1/#_sockets
【问题讨论】:
标签: java configuration messaging wildfly-swarm activemq-artemis