Author |
Message
|
objectthinker06 |
Posted: Sat May 16, 2009 9:15 am Post subject: JMS connection to Cluster Queue Managers |
|
|
Novice
Joined: 15 Aug 2006 Posts: 15
|
Environment Background:
I have a JMS program/application that connects to a cluster of two queue managers with different names, however, they exist for the same business reason. I was told by my MQ admin that the cluster is designed for High Availability and Load Balancing.
The JMS application uses .bindings file which references four parameters (noted below) to connect to the target queue manager for putting or getting messages:
a) Hostname (the server name hosting the target queue manager)
b) Queue Manager Name
c) Channel Name
d) Port # of the listener
e) Queue name
Question:
My question is when queue managers are clustered for load balancing/HA what should be the following values:
a) Hostname (Shouldn't there be a cluster address i.e. a virtual IP)
b) The queue manager name (A virtual queue manager name or alias that can resolve to any of the available two queue managers)
Thanks |
|
Back to top |
|
 |
PeterPotkay |
Posted: Sat May 16, 2009 11:15 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
A should be the hostname of the server hosting the Queue Manager you connect to. Or if its hardware clustered (not MQ Clustered), the Virtual DNS name that fronts the 2 or more servers where that QM can run. You don't connect to an MQ Cluster. You connect to a Queue Manager. If you use Client Channel Tables you don't specify the hostname / port / channel and you let the table decide which Queue Manager to connect to.
B should be blank. And for the queue objects, their Queue Manager name should be blank to.
Tell your MQ Admin MQ Clusters do not provide High Availability. If the server hosting QM1 crashes, any persistent committed messages that QM1 had are marooned, and MQ Clustering can't help. That's not H.A. If there are messages in flight addressed specifically for QM1, and it crashes, they are stuck waiting in the transmit queues of the other QMs until you manually recover QM1's server. If you can recover it. That's not H.A. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
PeterPotkay |
Posted: Sat May 16, 2009 12:31 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
PeterPotkay wrote: |
B should be blank. And for the queue objects, their Queue Manager name should be blank to. |
I'm assuming the JMS app is an MQ Client on another server. If the JMS app runs on the same server as the Queue Manager, and there is no default Queue Manager, then the Queue Manager property of the Connection Factory will have to filled in with the name of the QM you want to connect to.
The QM property of the queue objects should remain blank in either case. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
objectthinker06 |
Posted: Sat May 16, 2009 6:10 pm Post subject: |
|
|
Novice
Joined: 15 Aug 2006 Posts: 15
|
Yes the JMS application runs on different servers from the servers hosting the queue managers. From preliminary research it seems like JMSAdmin objects can refer to client connection defn. table (CCDT) through CF JMSAdmin object. However, I need to verify that a JMSAdmin queue reference would work without mentioning queue manager when defining.
Thanks, |
|
Back to top |
|
 |
Vitor |
Posted: Sun May 17, 2009 8:01 am Post subject: Re: JMS connection to Cluster Queue Managers |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
objectthinker06 wrote: |
I was told by my MQ admin that the cluster is designed for High Availability and Load Balancing. |
Your MQ admin is an idiot. WMQ clusters do not provide High Availability, as has been discussed many times on this forum and as my worthy associate points out.
WMQ Cluster queue managers can be made HA by applying additional software. In this instance you should follow the instructions given in the relevant support pac.
You can use CCDT to provide application failover to a cluster if the application is well-behaved and responds appropriately to a broken connection. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
objectthinker06 |
Posted: Sun May 17, 2009 8:39 am Post subject: |
|
|
Novice
Joined: 15 Aug 2006 Posts: 15
|
Well it seems like the whole load balancing scenario can be made simpler if we use a H/W -load balancer (e.g. Citrix Netscaler or any other) before the queue managers. This would work for WMQ client to WMQ Server connections. However, does fronting queue managers using such H/W-load balancers work for WMQ Server to WMQ Server connections ?
Thanks |
|
Back to top |
|
 |
Vitor |
Posted: Sun May 17, 2009 9:45 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
objectthinker06 wrote: |
However, does fronting queue managers using such H/W-load balancers work for WMQ Server to WMQ Server connections ? |
No. Load balance server - server connections with a WMQ Cluster. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
fjb_saper |
Posted: Sun May 17, 2009 6:09 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
objectthinker06 wrote: |
Yes the JMS application runs on different servers from the servers hosting the queue managers. From preliminary research it seems like JMSAdmin objects can refer to client connection defn. table (CCDT) through CF JMSAdmin object. However, I need to verify that a JMSAdmin queue reference would work without mentioning queue manager when defining.
Thanks, |
Don't worry too much about it. If done right it just works.
Fee free to try it out and let us know if you have any problems.
 _________________ MQ & Broker admin |
|
Back to top |
|
 |
objectthinker06 |
Posted: Mon May 18, 2009 2:40 pm Post subject: |
|
|
Novice
Joined: 15 Aug 2006 Posts: 15
|
I have issues assigning the CCDTURL reference to the CF. I'm using Websphere MQ v5.3 and the error message that I'm getting from JMSAdmin is mentioned below:
Error:
Invalid property for a com.ibm.mq.jms.MQConnectionFactory: CCDTURL
The JMSAdmin command that I'm using is:
alter CF(BlahCF) SYNCPOINTALLGETS(YES) QMGR(BlahQM*) TRANSPORT(CLIENT) CCDTURL('file:///C:/WebSphere MQ Server/Qmgrs/BlahQM1/@ipcc/amqclchl.tab')
The command is executed in one line. Does anyone know how this can be fixed ?
Thanks |
|
Back to top |
|
 |
fjb_saper |
Posted: Mon May 18, 2009 8:00 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
objectthinker06 wrote: |
I have issues assigning the CCDTURL reference to the CF. I'm using Websphere MQ v5.3 and the error message that I'm getting from JMSAdmin is mentioned below:
Error:
Invalid property for a com.ibm.mq.jms.MQConnectionFactory: CCDTURL
The JMSAdmin command that I'm using is:
alter CF(BlahCF) SYNCPOINTALLGETS(YES) QMGR(BlahQM*) TRANSPORT(CLIENT) CCDTURL('file:///C:/WebSphere MQ Server/Qmgrs/BlahQM1/@ipcc/amqclchl.tab')
The command is executed in one line. Does anyone know how this can be fixed ?
Thanks |
Easily. You need to upgrade to V6.0.2.6 or version 7.
Version 5.3 has been out of support for a while and the ccdturl was introduced to JMS with version 6.  _________________ MQ & Broker admin |
|
Back to top |
|
 |
|