IBM MQ Error 2009 - 如何检测队列管理器何时启动其自己的线程

时间:2018-04-25 09:28:15

标签: ibm-mq

这对于可靠的消息传递来说是奇怪的,有点令人担忧。我希望我能错过一些东西。

由于已知的网络故障,今天才发现这一点。它给了我一个很好的机会来看看一些容错。

在线程1上,我们在队列管理器管理的队列上发送消息。这段代码:

using (MQQueueManager qMgr = new MQQueueManager(_queueManager, _connectionProperties))
{
 // send message
}

只是"挂起"在队列管理器上。在,它似乎运行,然后超时。也许它在一个线程上运行并且线程崩溃。

除了我们有第二个线程正在侦听另一个队列之外,我们不会知道任何事情。

我们在接收线程上有相同的构造:

using (MQQueueManager qMgr = new MQQueueManager(_queueManager, _connectionProperties))
{
 // listen for message
}

但是这会抛出MQException错误代码2009.这表明存在网络问题。 (http://www-01.ibm.com/support/docview.wss?uid=swg21472342

然而,同样,第二个线程上的QueueManager似乎会启动自己的线程,抛出异常,导致无法捕获它并做出反应。

我们有什么东西不见了吗?

更新

以下是我的连接属性:

Hashtable connectionProperties = new Hashtable();
connectionProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
connectionProperties.Add(MQC.USE_MQCSP_AUTHENTICATION_PROPERTY, true);
connectionProperties.Add(MQC.HOST_NAME_PROPERTY, hostName);
connectionProperties.Add(MQC.CHANNEL_PROPERTY, channel);
connectionProperties.Add(MQC.PORT_PROPERTY, portNumber);
connectionProperties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_RECONNECT_Q_MGR);
return connectionProperties;

请记住我是IBM MQ的新手,我注意到我有连接属性MQC.MQCNO_RECONNECT_Q_MGR。这会起作用吗?我的目标是在出现问题时了解和管理,而不是依赖我们不完全理解的事情。

0 个答案:

没有答案