проверка состояния администратора очередей с помощью Visual Basic 6

Я должен проверить состояние диспетчера очередей IBM MQ перед открытием очереди. Мне нужно создать приложение-запросчик, проверив, активен ли QMgr или нет, затем вызовите сообщение msg или получите сообщение от MQ. Можно ли проверить статус,

пожалуйста, поделитесь фрагментами кода.

Спасибо


person Mani    schedule 07.05.2014    source источник
comment
Вы должны быть более конкретными в своем вопросе, иначе он, скорее всего, будет закрыт. Ознакомьтесь с разделом как обратиться за помощью.   -  person C-Pound Guru    schedule 07.05.2014
comment
Мани, подробнее поможет. Что именно вы хотите проверить? Если вы можете подключиться к qmgr, то все в порядке (с точки зрения статуса)?   -  person Umapathy    schedule 07.05.2014
comment
Я проголосовал за закрытие в ожидании ответа о том, что именно движет требованием проверять статус перед размещением сообщения. Это пахнет плохим дизайном. Приложение для мониторинга просто подключается и спрашивает о вещах. Бизнес-приложение просто подключается и пытается отправлять/получать сообщения и обрабатывать исключения. Смешивание двух почти всегда плохо.   -  person T.Rob    schedule 08.05.2014


Ответы (1)


Вам НИКОГДА не нужно проверять QMgr перед открытием очереди. Как я ответил на похожий вопрос сегодня, предложенный дизайн очень, ОЧЕНЬ плохой дизайн. В результате асинхронный обмен сообщениями снова превращается в синхронный. Это связывает производителей сообщений с потребителями, вводит зависимости от местоположения и разрешения, разрушает кластеризацию, нарушает распределение и балансировку нагрузки WMQ, встраивает топологию сети в приложение и делает всю систему хрупкой. Пожалуйста, не обвиняйте WMQ в том, что он работает некорректно после того, как намеренно отключил все его лучшие функции, кроме фактических операций очереди/удаления из очереди.

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

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

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

person T.Rob    schedule 08.05.2014
comment
Спасибо, Роб, можно ли поделиться некоторыми фрагментами кода, которые дадут представление о том, как мне проверить статус Qmgr, прежде чем я смогу инициировать какие-либо сообщения get или put? - person Mani; 08.05.2014
comment
Если вы успешно подключились, статус хороший, поэтому продолжайте и пишите сообщения. Если вы получите код ошибки при попытке поместить сообщения, код ошибки сообщит вам, почему размещение не удалось. Что еще нужно? Почему вы хотите проверять статус перед размещением сообщений и что именно вы проверяете? - person T.Rob; 08.05.2014