users@genericjmsra.java.net

WebSphere MQ qmgr failover

From: <conny.gyllendahl_at_crosskey.fi>
Date: Tue, 26 Sep 2006 14:00:38 +0300

Hello!

Here is my setup:

- Two application hosts running Sun Application Server 8.1 Enterprise
Edition
in an application cluster.

- Two servers running Sun Cluster and managing a WebSphere MQ 5.3 queue
manager.

- The application hosts both use the genericra to connect to the
queuemanager
and run an MDB which reads messages from a queue, does some work and
replies
to a queue defined in the original message.

Basically it looks like this:

remote app <--> remote qmgr 1 <--> remote qmgr 2 (gateway) <--> our qmgr
<--> our MDB

The remote app sends a message to a local queue at our qmgr. The message is
picked
up by the MDB and then replies to a qmgr and remote temporary queue defined
in the
original message. In order for this to work we defined remote qmgr alias in
our
qmgr telling it to go through the qmgr gatway.

The cluster starts the qmgr with strmqm and ends it with endmqm -i.

We have tested it and everything works, when the qmgr is started before the
application.

When we failover/switch the qmgr to the other host and test the application
(by having
the remote app send a message) to our local queue the MDB receives the
message but is
unable to reply.

javax.jms.JMSException: MQJMS2008: failed to open MQ queue
        at
com.ibm.mq.jms.MQQueueSession.getQueueOpenException(MQQueueSession.java:940)
        at
com.ibm.mq.jms.MQQueueSession.getOutputQueue(MQQueueSession.java:866)
        at
com.ibm.mq.jms.MQQueueSession.createSender(MQQueueSession.java:206)
        at
com.sun.genericra.outbound.SessionAdapter.createSender(SessionAdapter.java:356)

If we restart the application instances it works again so it seems to be
something with the
outgoing connection. I have tried setting reconnectattempts and
redeliveryattempts in the
deployment descriptor and changed "close all connetions on any failure" on
the pool in the
admin gui but to no help.

My guess is that it needs to reconnect/reinitialize somehow. Does anyone
know if this is doable?

regards,
Conny