JBoss EAP 7.4迁移至ActiveMQ Artemis后JMS桥配置参数填充求助
问题:JBoss EAP 7.4中ActiveMQ Artemis JMS桥配置缺失参数填充
正在从OpenMQ迁移到ActiveMQ Artemis,在JBoss EAP 7.4中配置JMS桥时遇到参数缺失问题。需要配置两个JMS桥:
- 入桥:从远程Artemis集群(1.0.0.1:61616)的
sync.Trigger.gg队列消费消息,转发到本地SyncTriggerQueue - 出桥:将本地消费失败的消息转发到远程
dlq.sync.Trigger.gg队列
当前配置中JMS桥的部分参数标记为"??",请求填充以确保桥正常运行,同时可按需调整内置ActiveMQ队列配置。
完整修改后配置
1. 调整内置Artemis队列与地址设置
在<server name="default">节点内添加专属死信队列及地址配置:
<address-setting name="jms.queue.SyncTriggerQueue" dead-letter-address="jms.queue.SyncTriggerDLQ" expiry-address="jms.queue.ExpiryQueue" max-size-bytes="10485760" page-size-bytes="2097152" message-counter-history-day-limit="10" redistribution-delay="1000"/> <jms-queue name="SyncTriggerDLQ" entries="java:/jms/queue/SyncTriggerDLQ" durable="true"/>
2. 填充入桥(SyncTriggerInBridge)参数
<jms-bridge name="SyncTriggerInBridge" module="org.apache.activemq.artemis" add-messageID-in-header="true" max-batch-time="500" max-batch-size="10" max-retries="-1" failure-retry-interval="30000" quality-of-service="ONCE_AND_ONLY_ONCE"> <source destination="sync.Trigger.gg" connection-factory="jms/RemoteConnectionFactory" user="appusertest" password="appusertest"> <source-context> <property name="java.naming.factory.initial" value="org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"/> <property name="java.naming.provider.url" value="tcp://1.0.0.1:61616"/> </source-context> </source> <target destination="java:jboss/exported/SyncTriggerQueue" connection-factory="java:/ConnectionFactory"> </target> </jms-bridge>
3. 填充出桥(SyncTriggerOutBridge)参数
<jms-bridge name="SyncTriggerOutBridge" module="org.apache.activemq.artemis" add-messageID-in-header="true" max-batch-time="500" max-batch-size="10" max-retries="-1" failure-retry-interval="30000" quality-of-service="ONCE_AND_ONLY_ONCE"> <source destination="java:/jms/queue/SyncTriggerDLQ" connection-factory="java:/ConnectionFactory"> </source> <target destination="dlq.sync.Trigger.gg" connection-factory="jms/RemoteConnectionFactory" user="appusertest" password="appusertest"> <target-context> <property name="java.naming.factory.initial" value="org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"/> <property name="java.naming.provider.url" value="tcp://1.0.0.1:61616"/> </target-context> </target> </jms-bridge>
参数说明
入桥参数逻辑
- source.destination:远程队列物理名称
sync.Trigger.gg,直接匹配远程Artemis集群中的队列 - source.connection-factory:远程Artemis标准连接工厂的JNDI名
jms/RemoteConnectionFactory - source-context.java.naming.provider.url:远程Artemis的TCP连接地址
tcp://1.0.0.1:61616,与资源适配器配置一致 - target.destination:本地队列的导出JNDI地址
java:jboss/exported/SyncTriggerQueue - target.connection-factory:JBoss内置Artemis的本地连接工厂
java:/ConnectionFactory
出桥参数逻辑
- source.destination:为
SyncTriggerQueue配置的专属死信队列java:/jms/queue/SyncTriggerDLQ,确保仅转发该队列的失败消息 - source.connection-factory:本地内置连接工厂
java:/ConnectionFactory - target.destination:远程死信队列物理名称
dlq.sync.Trigger.gg - target.connection-factory:同入桥使用远程连接工厂
jms/RemoteConnectionFactory - target-context.java.naming.provider.url:远程Artemis的TCP连接地址
额外配置原因
- 为
SyncTriggerQueue配置专属死信队列,避免与全局DLQ的消息混淆,精准控制需要转发回远程的失败消息 - 专属死信队列设为持久化,防止消息丢失
内容的提问来源于stack exchange,提问作者rihdze
相关产品推荐
相关产品推荐

