无法更改 IBM MQ XMS.NET 客户端重新连接超时
IBM MQ XMS.NET client reconnect timeout can't be changed
IBM MQ 有一个 automatic client renonnect functionality, and it has a default timeout of 30 minutes. After 30 minutes it stops trying to reconnect (source - p35)。
我想更改超时,以便重试持续更长的时间(例如 2 小时)。我想我可以为此使用 属性 XMSC.WMQ_CLIENT_RECONNECT_TIMEOUT
因为它在 XMSC class.
中可用
测试
我可以通过阻止客户端应用程序连接到 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
备注
我找到了一种方法来完成这个,但不幸的是不是通过代码...
重新连接超时可以在mqclient.ini
中设置。
示例:
CHANNELS:
MQReconnectTimeout = 14400
应用此配置后,客户端应用程序应持续重试 4 小时。
IBM MQ 有一个 automatic client renonnect functionality, and it has a default timeout of 30 minutes. After 30 minutes it stops trying to reconnect (source - p35)。
我想更改超时,以便重试持续更长的时间(例如 2 小时)。我想我可以为此使用 属性 XMSC.WMQ_CLIENT_RECONNECT_TIMEOUT
因为它在 XMSC class.
测试
我可以通过阻止客户端应用程序连接到 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
备注
我找到了一种方法来完成这个,但不幸的是不是通过代码...
重新连接超时可以在mqclient.ini
中设置。
示例:
CHANNELS:
MQReconnectTimeout = 14400
应用此配置后,客户端应用程序应持续重试 4 小时。