【问题标题】:Implement a connection between my application (Spring integration) with IBM-MQ - High Availability在我的应用程序(Spring 集成)与 IBM-MQ 之间实现连接 - 高可用性
【发布时间】:2017-06-04 12:11:50
【问题描述】:

我正在尝试在我的应用程序(Spring 集成)与 IBM-MQ 之间实现连接,我确实看到了问题 spring-integration-support-for-clustered-high-availability-ibm-mq-manager,但在我的情况下,每个主机都有不同的“queueManager”和“channels”,这意味着我必须有如下配置,但是 queueManager 和 channels 属性支持字符串而不是列表值:

<bean id="connectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
        <property name="connectionNameList" value="host1(6464),host1(6464)" />
        <property name="clientReconnectTimeout" value="15000" />
        <property name="transportType" value="1" />
        <property name="queueManager" value="QM1, QM1," />
        <property name="channel" value="channel1,channel1"/> 
</bean>

【问题讨论】:

    标签: spring-integration ibm-mq high-availability


    【解决方案1】:

    最简单的方法是在两台主机上定义一个同名的频道,让客户端先尝试 host1,然后使用connectionNameList 尝试 host2。在此设置中,它总是更喜欢 host1。您需要指定一个空白的queueManager,以便客户端接受它连接到的队列管理器。示例如下:

        <property name="queueManager" value="" />
    

    Morag 在您链接到的另一篇文章的评论中指出的另一个选项是使用 CCDT(客户渠道定义表)。

    Using a client channel definition table with IBM WebSphere MQ classes for JMS。属性名称为CCDTURL

    CCDT 可以有多个 CLNTCONN 通道条目,它们具有不同的通道名称,都具有相同的 QMNAME,这称为 Queue Manager Group,然后您可以将 queueManager 属性指定为 *QMNAME,这将允许应用程序连接到您被定向到的任何队列管理器,而不考虑实际的队列管理器名称。我提供的链接底部列出了 CLNTCONN 的其他参数,它们可以帮助您控制一个队列管理器是否优于其他队列管理器,以及在需要重新连接时连接到哪个队列管理器。

    【讨论】:

    • 乔什·麦克,非常感谢。我已经尝试了第一个选项,并且非常成功
    猜你喜欢
    • 2020-04-02
    • 2016-07-18
    • 2018-10-13
    • 2019-06-01
    • 2011-11-28
    • 2020-06-16
    • 2015-11-24
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多