WebSphere MQ - Изменение структуры определения канала с использованием API-интерфейса XMS.NET
Я пытаюсь установить свойства структуры MQCD, в частности HeartBeatInterval, используя XMS.NET API.
Предыстория: у меня есть клиентские приложения (в.NET), использующие API-интерфейс XMS.NET для чтения сообщений из WebSphere MQ. Я использую режим ClientAcknowledge. Если клиент читает сообщение и не подтверждает его, WebSphere MQ ждет 300 секунд, прежде чем истечет время ожидания, и делает (возвращает) сообщение доступным в исходной очереди, чтобы другие клиенты могли прочитать сообщение.
Задача: я хочу уменьшить время ожидания с 300 секунд.
Наш администратор MQ предложил изменить свойство HearBeatInterval на канале. Но изменение не имеет значения.
Очевидно, что каким-то образом установка свойства HeartBeatInterval канала на стороне клиента (наряду с настройкой канала на стороне сервера) заставит его работать. Я пытаюсь установить это значение в клиентском приложении. Но API-интерфейс XMS не имеет свойства, соответствующего свойству MQCD.HeartBeatInterval.
Любое понимание в выполнении этой задачи по уменьшению тайм-аута сообщения? или даже установив HeartBeatInterval на стороне клиента - если это способ сделать это.
2 ответа
Конечно, это правда, что фактическое согласованное значение интервала пульса будет принимать наибольшее число из значений пульса на стороне клиента и на стороне сервера, т.е. будет использоваться наименее частый интервал. Если вы хотите более короткий интервал, вам нужно изменить оба конца.
Вместо того, чтобы кодировать это в своем приложении, почему бы не использовать CCDT? Это более гибко, если вы передумаете о ценности для использования и захотите снизить или повысить ее в будущем.
Дальнейшее чтение
Я думаю, что вы можете использовать интервал Disconnect (DISCINT
) атрибут канала подключения к серверу для завершения соединений из зависших приложений. По умолчанию DISCINT
установлен на 0, что означает, что он отключен. Вы можете установить значение, соответствующее вашим требованиям. Подробнее читайте здесь: http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.con.doc/q081860_.htm
Вот пример фрагмента для использования CCDT в приложении XMS .NET.
// Get an instance of factory.
factoryFactory = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
// Create WMQ Connection Factory.
cf = factoryFactory.CreateConnectionFactory();
// Use CCDT URL for client connection.
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "QM1");
cf.SetStringProperty(XMSC.WMQ_CCDTURL, "file://C:\\ProgramData\\IBM\\MQ\\qmgrs\\QM1\\@ipcc\\AMQCLCHL.TAB");
// Create connection.
connectionWMQ = cf.CreateConnection();