无法更改IBM MQ XMS.NET客户端重新连接超时

时间:2018-12-28 13:18:20

标签: c# .net websphere ibm-mq

IBM MQ具有automatic client renonnect功能,默认超时为30分钟。 30分钟后,它将停止尝试重新连接(source - p35)。

我想更改超时时间,以使重试时间更长(例如2个小时)。我想可以为此使用属性XMSC.WMQ_CLIENT_RECONNECT_TIMEOUT,因为它在XMSC类中可用。

测试

我可以通过阻止客户端应用程序连接到IBM MQ的端口1414来模拟连接失败。并且出于测试目的,我将超时值降低到5分钟(而不是30分钟)。

我在日志中看到的是客户端应用程序收到XMSException,原因码为2544(重新连接):

IBM.XMS.XMSException: MQ delivered an asynchronous event with completion code 1, and reason 2544.
XMSWMQ2014.explanation
XMSWMQ2014.useraction

Linked Exception : CompCode: 1, Reason: 2544

这会持续30分钟,然后,我得到一个XMSException,原因码为2009(连接断开)。并且自动重新连接失败。

XMSException occurred: IBM.XMS.XMSException: MQ delivered an asynchronous event with completion code 2, and reason 2009.
XMSWMQ2014.explanation
XMSWMQ2014.useraction

Linked Exception : CompCode: 2, Reason: 2009

我可以得出结论,更改超时值无效...我是否以错误的方式配置了重新连接超时?

下面有一个代码段:

XMSFactoryFactory factory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
IConnectionFactory connectionFactory = factory.CreateConnectionFactory();
connectionFactory.SetStringProperty(XMSC.WMQ_HOST_NAME, "hostname");
connectionFactory.SetIntProperty(XMSC.WMQ_PORT, 1414);
connectionFactory.SetStringProperty(XMSC.WMQ_CHANNEL, "channel_name");
connectionFactory.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
connectionFactory.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "*");
connectionFactory.SetIntProperty(XMSC.WMQ_CLIENT_RECONNECT_OPTIONS, XMSC.WMQ_CLIENT_RECONNECT_Q_MGR);
connectionFactory.SetIntProperty(XMSC.WMQ_CLIENT_RECONNECT_TIMEOUT, 300); //300 seconds = 5 minutes

IConnection conn = connectionFactory.CreateConnection();
conn.Start();

IBM MQ客户端版本:8.0.0.5

注释

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来完成此操作,但不幸的是,不是通过代码...

可以在mqclient.ini中设置重新连接超时。

示例:

CHANNELS:
MQReconnectTimeout = 14400

应用此配置后,客户端应用程序应保持重试4小时。