You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置JBoss EAP连接IBM WebSphere MQ多实例队列管理器实现高可用

配置JBoss EAP 6.4连接IBM WebSphere MQ多实例队列管理器(高可用)

我来帮你一步步梳理JBoss EAP 6.4连接WebSphere MQ多实例队列管理器实现高可用的配置方法,重点聚焦在standalone.xml的具体配置细节上:

1. 前置准备

  • 先确保你已经在JBoss EAP 6.4的modules目录下部署了WebSphere MQ的资源适配器(wmq.jmsra.rar)。如果还没部署,把rar文件放到com/ibm/mq/main目录下,同时创建对应的module.xml来声明这个模块(模块配置要指定依赖的JAR包和资源适配器路径)。

2. 配置资源适配器与高可用连接工厂

找到standalone.xml里的<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">节点,添加以下配置(替换掉占位符里的实际MQ信息):

<resource-adapters>
    <resource-adapter id="wmq.jmsra.rar">
        <archive>
            wmq.jmsra.rar
        </archive>
        <!-- 全局资源适配器配置 -->
        <config-property name="hostName">MQ_HOST1,MQ_HOST2</config-property> <!-- 多实例主机,逗号分隔 -->
        <config-property name="port">1414,1414</config-property> <!-- 对应端口,端口相同重复写,不同则分别填写 -->
        <config-property name="queueManager">YOUR_QMGR_NAME</config-property>
        <config-property name="channel">YOUR_CHANNEL_NAME</config-property>
        <config-property name="transportType">CLIENT</config-property>

        <!-- 高可用连接工厂配置 -->
        <connection-definitions>
            <connection-definition 
                class-name="com.ibm.mq.connector.outbound.ManagedQueueConnectionFactoryImpl" 
                jndi-name="java:/jms/MQConnectionFactory" 
                enabled="true" 
                pool-name="MQConnectionFactoryPool">
                <config-property name="hostName">MQ_HOST1,MQ_HOST2</config-property>
                <config-property name="port">1414,1414</config-property>
                <config-property name="queueManager">YOUR_QMGR_NAME</config-property>
                <config-property name="channel">YOUR_CHANNEL_NAME</config-property>
                <config-property name="transportType">CLIENT</config-property>
                
                <!-- 高可用核心配置 -->
                <config-property name="failover">true</config-property> <!-- 开启故障转移 -->
                <config-property name="reconnectionRetryCount">5</config-property> <!-- 重连重试次数 -->
                <config-property name="reconnectionRetryInterval">3000</config-property> <!-- 重连间隔(毫秒) -->
                
                <!-- 连接池有效性检查 -->
                <security>
                    <application/>
                </security>
                <validation>
                    <background-validation>true</background-validation>
                    <background-validation-millis>60000</background-validation-millis> <!-- 每分钟检查一次连接有效性 -->
                </validation>
            </connection-definition>
        </connection-definitions>

        <!-- 配置目标队列(示例) -->
        <admin-objects>
            <admin-object 
                class-name="com.ibm.mq.connector.outbound.MQQueueProxy" 
                jndi-name="java:/jms/QUEUE/MyQueue" 
                enabled="true" 
                use-java-context="true" 
                pool-name="MyQueuePool">
                <config-property name="baseQueueName">MY_QUEUE_NAME</config-property>
                <config-property name="queueManager">YOUR_QMGR_NAME</config-property>
            </admin-object>
        </admin-objects>
    </resource-adapter>
</resource-adapters>

关键配置说明

  • hostNameport:填写所有MQ多实例的主机和端口,逗号分隔后,MQ客户端会自动轮询尝试连接可用实例
  • failover=true:开启故障转移机制,当主实例宕机时,客户端会自动切换到备用实例
  • reconnectionRetryCount/reconnectionRetryInterval:控制实例切换后的重连逻辑,避免短时间内频繁重试
  • background-validation:定期检查连接池中的连接有效性,及时剔除失效连接,保证可用连接的可靠性

3. 可选:JMS子系统关联配置

如果需要通过JBoss的JMS子系统统一管理连接,可以在<subsystem xmlns="urn:jboss:domain:messaging:1.4">节点下添加连接工厂引用:

<jms-connection-factories>
    <connection-factory name="MQConnectionFactory">
        <connectors>
            <connector-ref connector-name="in-vm"/>
        </connectors>
        <entries>
            <entry name="java:/ConnectionFactory"/>
            <entry name="java:jboss/exported/jms/ConnectionFactory"/>
        </entries>
        <xa-pool>
            <min-pool-size>1</min-pool-size>
            <max-pool-size>20</max-pool-size>
            <prefill>true</prefill>
        </xa-pool>
    </connection-factory>
</jms-connection-factories>

4. 配置验证

  • 启动JBoss EAP 6.4,查看服务器日志,确认资源适配器、连接工厂和队列都成功部署,无报错信息
  • 编写简单的JMS客户端代码,通过JNDI lookup获取连接工厂和队列,进行消息收发测试;手动停止MQ主实例,观察客户端是否能自动切换到备用实例,消息收发是否正常

注意事项

  • 确保WebSphere MQ多实例队列管理器已正确配置:主备实例共享队列管理器数据目录,且能自动完成主备切换
  • 资源适配器版本要与MQ服务器版本兼容,避免版本不匹配导致的连接异常
  • 如果需要身份认证,在连接工厂配置中添加userNamepasswordconfig-property,或者通过JAAS配置实现认证

内容的提问来源于stack exchange,提问作者Bhanu

火山引擎 最新活动