You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wildfly 10中能否为连接JMS集群的JMS-Bridge配置故障转移?

可以为JMS-Bridge配置到JMS集群的故障转移,具体实现方式如下

结合你已有的套接字绑定和HTTP连接器配置,只需要在JMS-Slave的配置中补充高可用远程连接工厂并调整JMS-Bridge的引用即可实现故障转移。以下是详细步骤:

1. 确认现有HTTP连接器配置

首先确保你在messaging-activemq子系统中已经正确配置了两个HTTP连接器,关联到已有的出站套接字绑定:

<http-connector name="http-connector-1" socket-binding="remote-server-1" endpoint="http-acceptor"/>
<http-connector name="http-connector-2" socket-binding="remote-server-2" endpoint="http-acceptor"/>

这里的endpoint="http-acceptor"需要和JMS-Master集群节点上配置的HTTP acceptor名称一致(默认就是http-acceptor,如果集群中修改过名称要对应调整)。

2. 创建静态连接器组

将两个HTTP连接器组合成一个集群连接器组,作为故障转移的候选节点池:

<static-connectors name="jms-cluster-connectors">
    <connector-ref connector-name="http-connector-1"/>
    <connector-ref connector-name="http-connector-2"/>
</static-connectors>

3. 配置高可用远程连接工厂

创建一个支持故障转移的远程连接工厂,关联上面的静态连接器组,并启用高可用参数:

<remote-connection-factory name="jms-cluster-connection-factory" 
                           entries="java:/jms/ClusterConnectionFactory" 
                           connectors="jms-cluster-connectors" 
                           ha="true" 
                           reconnect-attempts="-1" 
                           block-on-acknowledge="true"/>

关键参数说明:

  • ha="true":开启高可用模式,让连接工厂能够感知集群节点状态,自动触发故障转移
  • reconnect-attempts="-1":设置为-1表示无限次重试连接,直到成功切换到可用节点
  • block-on-acknowledge="true":确保消息确认后再进行故障转移,避免消息丢失(可根据你的QoS需求调整)

4. 调整JMS-Bridge配置

修改JMS-Bridge的源连接工厂,引用上面创建的高可用连接工厂:

<jms-bridge name="my-target-jms-bridge">
    <source>
        <connection-factory name="java:/jms/ClusterConnectionFactory"/>
        <destination name="jms/topic/YourTargetTopic"/> <!-- 对应JMS-Master集群中的目标Topic -->
    </source>
    <target>
        <connection-factory name="java:/ConnectionFactory"/> <!-- JMS-Slave本地的连接工厂 -->
        <destination name="jms/topic/LocalForwardTopic"/> <!-- JMS-Slave本地的目标Topic -->
    </target>
    <quality-of-service>AT_MOST_ONCE</quality-of-service> <!-- 根据业务需求选择QoS级别 -->
    <failure-retry-interval>5000</failure-retry-interval> <!-- 连接失败后重试间隔(毫秒) -->
    <max-retries>-1</max-retries> <!-- 无限重试 -->
    <batch-size>10</batch-size>
    <batch-timeout>1000</batch-timeout>
</jms-bridge>

额外注意事项

  • 版本兼容性:确保JMS-Slave和JMS-Master集群使用的WildFly/ActiveMQ Artemis版本一致,避免协议不兼容导致的故障转移失败
  • 持久化订阅:如果你的JMS-Bridge使用持久化订阅,要确保客户端ID唯一,并且集群中订阅状态已同步(JMS-Master作为HA集群,默认会同步订阅状态)
  • 端口与防火墙:确认JMS-Slave能够访问JMS-Master集群两个节点的8080和18080端口,防火墙规则不要拦截这些流量

内容的提问来源于stack exchange,提问作者Stefan Großmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:15:40