首页 > 解决方案 > 在 Wildfly 10 中启动 JMS 桥的问题

问题描述

我正在尝试在 Wildfly 10 的两个实例之间建立 JMS 或核心桥。

我的队列和网桥配置:

<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0">
    <server name="default">

        ...

        <jms-queue name="APIResponseSource" entries="queue/APIResponseSource java:/jms/queue/APIResponseSource java:jboss/exported/jms/queues/APIResponseSource" durable="false"/>

        ...

        <bridge name="APIResponseBridge" queue-name="jms.queue.APIResponseSource" forwarding-address="jms.queue.APIResponseTarget" use-duplicate-detection="true" static-connectors="response-bridge-connector"/>

        ...

    </server>
</subsystem>

我在这篇文章中使用了示例:

Wildfly 10 JMS 桥接 HTTPS 配置问题

我得到的错误是:

2018-09-25 23:44:43,170 WARN  [org.apache.activemq.artemis.core.server] (ServerService Thread Pool -- 65) AMQ222125: No queue found with name jms.queue.APIResponseSource bridge APIResponseBridge will not be deployed.

我已经使用了我能想到的所有队列名称组合,APIResponseSource、jms.queue.APIResponseSource、jms.queues.APIResponseSource、queue.APIResponseSource,但最终结果是一样的。我看过一些关于设置核心队列的讨论,但在记录的 Wildfly 10 配置中似乎没有类似的内容。我还看到了一些关于“jms-bridge”元素的讨论,但我也没有在文档中找到类似的东西。出于性能原因,我更喜欢使用核心网桥。

有任何想法吗?

标签: configurationjmswildfly-10

解决方案


我认为这里的问题是部署资源的顺序。“核心”资源(如核心队列、桥接、转移等)在 JMS 资源(如 JMS 队列和主题)之前部署。因此,网桥部署在 JMS 队列之前,这意味着代表 JMS 队列的“核心”队列尚不存在,因此出现错误。jms.queue.APIResponseSource您应该定义映射到同名地址的“核心”队列,例如:

<queue name="jms.queue.APIResponseSource" address="jms.queue.APIResponseSource"/>

我不相信这是明确记录的,但您会queue在 docs/schema/wildfly-messaging-activemq_1_0.xsd 中找到该元素。


推荐阅读