Компания IBM
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 1531 / 139 | Оценка: 4.36 / 3.98 | Длительность: 16:32:00
ISBN: 978-5-9556-0031-4
Специальности: Системный архитектор
Лекция 5:

Создание интерфейсов передачи сообщений. Триггеринг

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

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

Используя механизм триггеринга можно сделать так, чтобы каналы отправители, перешедшие в нейтральное состояние 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 ] .

  1. Остановить канал отправитель, выполнив пункт Stop контекстного меню. При выполнении данного меню появится форма, изображенная на рис.4.12, имеющая следующие параметры:

    Force interruption of current message batch - прерывание и принудительное завершение транзакции. Если выставить флажок в этом параметре, то становится доступным параметр Allow process/thread termination позволяющий принудительно остановить процесс передачи данных. Рекомендуется не использовать эти два параметра, чтобы перед остановкой канала обеспечить передачу сообщений, по которым транзакция была уже открыта.

    New state - указывается состояние канала, в которое он будет переведен после остановки. Может иметь два значения Inactive и Stopped.

    Параметры в секции Filter ( Only stop channels from this remote queue manager и Only stop channels from this remote connection ) используются только для z/OS.

    Остановка канала

    Рис. 4.12. Остановка канала
  2. Остановить канал получатель.
  3. Выполнить пункт контекстного меню Reset для канала получателя, выставив значение Message Sequence Number в единицу.
  4. Стартовать канал получатель при помощи контекстного меню Start.
  5. Выполнить пункт контекстного меню Reset для канала отправителя, выставив значение Message Sequence Number в единицу (рис.4.13).
    Выравнивание счетчика сообщений

    Рис. 4.13. Выравнивание счетчика сообщений
  6. Если использовался способ остановки с прерыванием транзакции, то выполнить пункт контекстного меню Resolve и выбрать метод обработки сообщений, для которых транзакция не завершилась (рис.4.14). Commit - передать сообщения, Back out - выполнить откат транзакции.
    Метод обработки сообщений с незавершенной транзакцией

    Рис. 4.14. Метод обработки сообщений с незавершенной транзакцией
  7. Выполнить пункт контекстного меню Ping для канала отправителя с целью проверки установления соединения с каналом получателем. Данный пункт выполнять не обязательно, если вы уверены, что связь между каналами может быть установлена.
  8. Выполнить пункт контекстного меню Start для канала отправителя.

Эту процедуру следует выполнить когда устранены все неполадки, приведшие к остановке каналов или переходу в неопределенное состояние. Если в сети существуют проблемы со связью, то канал отправитель может не перейти в состояние running и тогда всю процедуру надо будет вновь повторить сначала. Следует заметить, что WebSphere MQ гарантирует доставку сообщений, но только при правильных настройках всех объектов, участвующих в процессе передачи. Если установить тип сообщений Non Persistent, то никакими силами не удастся восстановить сообщения, например, после перезагрузки компьютера или после остановки менеджера. Материалов, приведенной в данной лекции вполне достаточно для создания и управления интерфейсами передачи и обработки данных.

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >