2

我正在尝试在基于 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 还不完全支持它,所以它无法工作?

到目前为止我发现一些有用的资源:

4

1 回答 1

-1

#wildfly-swarm 上的友好和有益的聊天带来了解释和可能的解决方案,但我们将不得不等待错误修复,请参阅https://issues.jboss.org/browse/SWARM-1763

Ken Finnigan 在 Wildfly 消息传递的模块配置中发现了错误的根本原因:

问题是org.apache.activemq.artemismodule.xml 将 STOMP、AMQP 和 HornetQ 的协议模块定义为可选的结果,因此 WF Swarm 不会选择它们。

于 2018-01-05T16:23:37.160 回答