Соединение MQ - ошибка 2009 года

соединяю MQ с ниже кода. Я способен подключенный к MQ успешно. Мой случай, я помещаю сообщения в MQ каждая 1 минута однажды. После разъединения кабеля я получаю ошибку ResonCode, но свойство IsConnected все еще показывает верный. Это, правильный способ проверить, соединено ли соединение все еще? Или там немного лучше всего pratcices вокруг этого.

Я хотел бы открыть соединение, когда applicaiton запускается, сохраняют это открытым навсегда.

общедоступный статический MQQueueManager ConnectMQ () {

если ((queueManager == пустой указатель) || (! queueManager. IsConnected) || (queueManager. ReasonCode == 2009)) {queueManager = новый MQQueueManager ();} возвращают queueManager;}

1
задан T.Rob 20 September 2010 в 23:03
поделиться

1 ответ

Поведение клиентского соединения WMQ таково, что когда оно простаивает, оно будет казаться подключенным, пока вызов API не завершится неудачей или соединение не прервется. Поэтому isConnected(), скорее всего, будет сообщать true до тех пор, пока вызов get, put или inquire не будет выполнен неудачно, и тогда QMgr сообщит об отключении.

Другое дело, что 2009 - это не единственный код, который вы можете получить. Это тот код, который вы получаете при разрыве соединения, но есть коды соединения при отключении QMgr, отключении канала, а также различные ошибки ресурсов и другие ошибки.

Обычно, если требуется поддерживать постоянное соединение, вы хотите обернуть цикл соединения и обработки сообщений в блок try/catch, вложенный в оператор while. Когда вы поймаете исключение, отличное от преднамеренного выхода, закройте объекты и QMgr, поспите не менее 5 секунд, а затем перейдите к началу цикла while. Сон очень важен, потому что если вы попадете в жесткий цикл переподключения и бросите на QMgr сотни попыток подключения, вы можете поставить на колени даже мэйнфреймовый QMgr.

Альтернативой является использование клиента WMQ v7 и QMgr. В этой комбинации автоматическое переподключение настраивается как конфигурация канала.

2
ответ дан 3 September 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: