MQ Connection - ошибка 2009 года - PullRequest
1 голос
/ 01 июня 2010

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

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

публичная статическая MQQueueManager ConnectMQ () {

if ((queueManager == null) || (! QueueManager.IsConnected) || (queueManager.ReasonCode == 2009)) { queueManager = new MQQueueManager (); } return queueManager; }

1 Ответ

2 голосов
/ 02 июня 2010

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

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

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

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

...