Интеграция приложений на основе WebSphere MQ


Использование механизма триггеринга для автоматического старта каналов


Используя механизм триггеринга можно сделать так, чтобы каналы отправители, перешедшие в нейтральное состояние Inactive в результате истечения времени, указанного в атрибуте Disconnect Interval автоматически переходили в состояние Running при появлении в соответствующей трансмиссионной очереди сообщения. Для этого существует два способа: с использованием процесса и с использованием системной очереди инициализации. Рассмотрим вариант с использованием процесса.

Для каждой трансмиссионной очереди нужно создать:

  1. очередь инициализации;
  2. процесс и в качестве атрибута процесса User Data указать имя канала отправителя, который передает данные, поступающие в эту трансмиссионную очередь;
  3. в трансмиссионной очереди установить атрибуты
    • Trigger Control - On;
    • Trigger Type - First;
    • Trigger Depth - 1;
    • Trigger Message Priority - 0;
    • Initiation Queue Name - имя очереди инициализации созданной в п.1;
    • Process Name - имя процесса, созданного в п.2.

    Теперь рассмотрим второй способ автоматического старта канала отправителя без использования процессов. Для реализации второго способа требуется лишь установить атрибуты трансмиссионной очереди:

    • Trigger Control - On;
    • Trigger Type - First;
    • Trigger Depth - 1;
    • Trigger Message Priority - 0;
    • Trigger Data - имя канала отправителя, который передает данные, поступающие в эту трансмиссионную очередь;
    • Initiation Queue Name - имя системной очереди инициализации SYSTEM.CHANNEL.INITQ.

    Имя системной очереди инициализации может быть использовано в атрибуте Initiation Queue Name каждой трансмиссионной очереди.

    В процессе рестарта каналов возможна ситуация, когда транзакция по передаче сообщения еще не завершилась, а канал получил команду на остановку. В таком случае при рестарте каналов сообщение может быть передано с принудительным завершением транзакции либо остаться в исходящей очереди посредством отката транзакции. Остановка канала может осуществляться как с прерыванием и принудительным завершением транзакции, так и без прерывания. Во втором случае транзакция успешно закрывается, что гарантирует отсутствие в трансмиссионной очереди сообщений с признаком незавершенной транзакции (uncommitted messages). Последующий старт канала облегчается отсутствием необходимости выполнения команды resolve channel с вариантами обработки uncommitted сообщений. Операции по рестарту каналов можно производить с помощью команд MQSC и с помощью WebSphere MQ Explorer, выполняя соответствующие пункты контекстного меню для каждого канала. Рассмотрим процедуру рестарта каналов с помощью WebSphere MQ Explorer [9].




    Начало  Назад  Вперед