如何使用Spring连接到Tomcat上的多实例队列管理器?

时间:2013-12-05 14:41:44

标签: java spring tomcat ibm-mq

我需要在Tomcat服务器上连接一个多实例队列管理器。我找到了各种各样的“属性”,我必须设置它,但它们去哪里了?服务器XML中的Tomcat有一些设置,但IBM文档中所需的大多数设置都没有映射。目前我们已经连接了一个“单一”实例队列,如下所示:

<Resource 
     name="jms/TelematicsQCF" 
     CHAN="JAVA.Z1LC.CLIENT"
     HOST="blah.blah.com" 
     PORT="1111" 
     QMGR="MQB3" 
     TRAN="1" auth="Container"
     description="JMS Queue Connection Factory for sending messages"
     factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
     type="com.ibm.mq.jms.MQQueueConnectionFactory"
/>

如何连接多实例? AND,我还可以使用Spring DefaultMessageListenerContainer吗? AND(o man ...)我需要什么设置?

2 个答案:

答案 0 :(得分:1)

我没有很多Tomcat知识,但我来自WebSphere MQ背景。查看您提供的上下文,我认为以下内容适用于多实例队列管理器。

我将CRHOSTS设置为多个连接名称。我假设,在blah.blah.com主机上,队列管理器的活动实例运行并侦听端口1414,备用实例在b2.b3.com上运行并侦听端口1544.

CROPT是重新连接选项,设置为WMQ_CLIENT_RECONNECT_Q_MGR,其值为67108864.您可以从cmqc.h文件中找到这些常量的值。

CRT是重新连接超时值,它告诉客户端尝试重新连接多长时间。超时期限过后,如果连接尝试失败,客户端将停止重新连接。在这种情况下,我将值设置为500秒。

<Resource 
     name="jms/TelematicsQCF" 
     CHAN="JAVA.Z1LC.CLIENT"
     CRHOSTS="blah.blah.com(1414), b2.b3.com(1544)" 
     CROPT="67108864" 
     CRT="500"
     QMGR="MQB3" 
     TRAN="1" auth="Container"
     description="JMS Queue Connection Factory for sending messages"
     factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
     type="com.ibm.mq.jms.MQQueueConnectionFactory"
/>

希望这有帮助。

答案 1 :(得分:1)

答案是这样的:

<Resource name="jms/XXXQCF1" 
    CHAN="TMAX.CHANNEL" 
    CRSHOSTS="blah1.example.com(1420),blah2.example.com(1420)" 
    CROPT="67108864" 
    CRT="500" 
    QMGR="tmax.lrd.qmgr.a" 
    TRAN="1" 
    auth="Container" 
    description="JMS Queue Connection Factory for sending messages" 
    factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
    type="com.ibm.mq.jms.MQQueueConnectionFactory" />

请注意,Shashi上面有“CRHOSTS”并且IBM文档也有相同的内容,但是当我们尝试它时它不起作用。我们向IBM发出了一张票,他们说他们的网站上的文档是不正确的(顺便说一句,他们想要一张票来修复他们的文档!)。

我尝试过Shashi的“CRHOSTS”,它没有用,CRSHOSTS确实有效。不知道为什么会这样。我们还必须将我们的罐子升级到7.5。*。 “CROPT”和“CRT”我不确定,但这些设置有效。