如何在WildFly中设置和测试嵌入式ActiveMQ Artemis服务器?



我有一个独立的WildFly服务器运行,并想设置ActiveMQ Artemis的嵌入式实例,但我不确定我是否做得正确。以下是我的standalone-full.xml的相关部分:

<server>
...
<profile>
...
<subsystem xmlns="urn:jboss:domain:messaging-activemq:13.1">
<server name="default">
...
<http-connector name="http-connector" socket-binding="activemq" endpoint="http-acceptor"/>
<http-connector name="http-connector-throughput" socket-binding="activemq" endpoint="http-acceptor-throughput">
<param name="batch-delay" value="50"/>
</http-connector>
<http-acceptor name="http-acceptor" http-listener="activemq"/>
<http-acceptor name="http-acceptor-throughput" http-listener="activemq">
<param name="batch-delay" value="50"/>
<param name="direct-deliver" value="false"/>
</http-acceptor>
...
</server>
</subsystem>
...
<subsystem xmlns="urn:jboss:domain:undertow:12.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="${wildfly.undertow.statistics-enabled:${wildfly.statistics-enabled:false}}">
<server name="default-server">
...
<http-listener name="activemq" socket-binding="activemq" enable-http2="true"/>
...
</server>
</subsystem>
...
</profile>
...
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
...
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<socket-binding name="managemnet" interface="activemq-interface" port="${jboss.activemq.port:8081}"/>
...
</socket-binding-group>
</server>

当我试图连接到服务器在tcp://localhost:8081似乎没有发生。有没有什么工具可以帮助我检查这个问题,或者你们知道哪里出了问题吗?

编辑:对不起,伙计们,我忘了添加一些东西。这是一个错别字。然而,当使用标准配置

时,我收到了一个错误。

AMQ122005:无效"host"值"0.0.0.0"检测到"http-connector"连接器。

所以我假设某些东西配置错误,这是无法访问嵌入的artemis实例的原因。我不确定阿尔忒弥斯的标准端口是什么?是localhost:9990吗?

关于版本

tbody> <<tr>
应用程序版本
阿耳特弥斯2.19.1
Wildfly26.1

AMQ122005消息警告您已经绑定了" activemq"socket-binding正在被"http-connector"使用。http-connector0.0.0.0是无效的。远程客户端查找任何配置为使用该连接器的JMS ConnectionFactory,将收到指向0.0.0.0的存根,该存根将无法工作。

在这里需要做的唯一事情是将服务器绑定到一个具体的、远程可访问的接口,而不是0.0.0.0。因此,您不需要额外的http-listener等。

如果您使用JNDI,那么您可以使用如下所示的URL连接嵌入式代理:

http-remoting://host:8080

如果您没有使用JNDI,那么您可以使用如下URL连接到嵌入式代理:

tcp://host:8080?httpUpgradeEnabled=true

这是您在Quarkus的application.properties中配置的,在这种情况下,您可以忽略AMQ122005消息,因为您不使用JNDI。

为什么不使用standalone-full.xml呢?它有一个完整的嵌入式Artemis代理。WildFly 27的另一个解决方案是使用Galleon并提供嵌入式activemq层。

最新更新