IBM XMS client didn't invoke ExceptionListerner when both active and standby Queue Managers restarted

199 Views Asked by At

I am using XMS .NET client 7.5 version to connect to WebSphere's multi-instance queue manager.

And receiving message asynchronously and also subscribed to Exception Listener to receive any exception happening on WMQ connection.

To test the Queue Manager fail over scenario, we killed the existing connection and bringing the active queue manger instance down and standby instance up. During this course of action, the connected XMS client gets the attached Exception Listener invoked. The logic inside the Exception Listener method, restart the connection. Then we are good and we start receiving the message on the queue again.

However when all the 2 instances (in our case 2) present in the multi-instance queue manager restarted together, we didn't see the Exception Listener method invoked. Because of this, though there messages were present on the queue we didn't any messages.

(Later we closed client application ans started again, then we started receiving the messages.)

With this my questions are:

  1. Is this what excepted to happen in the scenario I described?

  2. If YES, how can get the Exception Listener method invoked even in this scenario. Do I need to set any settings on the connection factory from XMSC class?.

  3. And my last question. How .NET XMS client in specific and JMS client in general come to know connection is still valid?

1

There are 1 best solutions below

0
On BEST ANSWER

By default XMS .NET will attempt to reconnect for 30 minutes. If no connection is established within 30 minutes, an exception with MQRC_RECONNECT_FAILED will be thrown and no more attempts will be made. Please see here. In such cases applications needs to issue connect call again.

Regarding your question #3: It's always best to issue a call, like send or receive. If there is no connection to queue manager, then an exception will be thrown. Application handle that exception and issue a connect call again.