configuration - 在 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>
我在这篇文章中使用了示例:
我得到的错误是:
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”元素的讨论,但我也没有在文档中找到类似的东西。出于性能原因,我更喜欢使用核心网桥。
有任何想法吗?
解决方案
我认为这里的问题是部署资源的顺序。“核心”资源(如核心队列、桥接、转移等)在 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 中找到该元素。
推荐阅读
- php - 如何修复此错误“Eloquent 构建器实例上不存在属性 [折扣]。”
- javascript - 如何将数组推入嵌套数组?
- spring - 将用户保存在数据库中,Spring Security 注册表单
- java - 使用移位运算符了解 java 数组初始化
- typescript - 类型保护将泛型扩展到所有可能的值?
- php - 在 if 语句 PHP 中使用 empty() 和 "or"
- java - 如何自定义junit测试报告
- python - 如何在 Python Paramiko 中启动没有终端仿真的 shell?
- angular - 每次加载组件时都会递增地触发订阅代码
- c++ - 案例陈述没有推进到下一个陈述