Опубликован: 14.12.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Компания IBM
Лекция 9:

Программный интерфейс MQI. Основные функции

Дополнительные функции WebSphere MQ

Одним из важнейших приемов прикладного программирования для WebSphere MQ является использование транзакций, аналогичных транзакциям в базах данных. С помощью функций MQBEGIN , MQCMIT , MQBACK можно открыть транзакцию, завершить транзакцию успешно и откатить транзакцию, соответственно. В этом механизме прослеживается полная аналогия с транзакциями в базах данных. Программирование с использованием WebSphere MQ транзакций позволяет создавать надежные программы.

  • MQBEGIN - функция, которая открывает WebSphere MQ транзакцию, координирует работу менеджера очередей и может использовать внешние ресурсы менеджера.

    Синтаксис:

    MQBEGIN (Hconn, BeginOptions, 
             CompCode, Reason)

    где:

    Hconn - идентификатор связи (connection handle) с менеджером очередей
    BeginOptions - опции MQBEGIN
    CompCode - код завершения
    Reason - код ошибки, детализирующий код завершения.

    Здесь BeginOptions дает ссылку на структуру MQBO (Begin options), поля которой показаны в таблице 8.6

    Таблица 8.6. Поля структуры MQBO
    Имя поля MQBO Тип поля Имя поля Имя константы Значение константы
    StrucId MQCHAR4 Идентификатор структуры MQBO_STRUC_ID 'BObb'
    Version MQLONG Номер версии структуры MQBO_VERSION_1 1
    Options MQLONG Опции для управления MQBO MQBO_NONE 0

    На языке С макропеременная MQBO_DEFAULT содержит значения, приведенные в табл.8.6, и может быть использована в тексте следующим образом: MQBO MyBO = {MQBO_DEFAULT};

  • MQCMIT – функция, которая указывает на то, что все сообщения, прочитанные и записанные с момента открытия транзакции, становятся постоянными, то есть транзакция успешно завершена. Сообщения, помещенные в очередь как часть блока сообщений, становятся доступными всем приложениям. Сообщения, прочитанные из очереди как часть блока сообщений, удаляются из очереди.

    Синтаксис:

    MQCMIT (Hconn, CompCode, Reason)

    Комментарии в данном случае излишни.

  • MQBACK - функция, которая указывает на то, что всем сообщениям, прочитанным и записанным с момента открытия транзакции, дается задний ход, то есть производится откат транзакции. Все сообщения, помещенные в очередь, удаляются из нее. Все сообщения, прочитанные из очереди, восстанавливаются в очереди (становятся доступными). Как правило, при чтении сообщения удаляются из очереди или помечаются как транзакционные и становятся недоступными (uncommitted messages), если прошла команда MQBEGIN .

    Синтаксис:

    MQBACK (Hconn, CompCode, Reason)

    Работа функций MQBEGIN , MQCMIT и MQBACK будет на примере продемонстрирована в "Основы программирования для WebSphere MQ" .

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

  • MQINQ – функция, которая возвращает массив цифр и множество символьных строк, содержащих параметры объекта. В качестве объектов могут выступать очередь, процесс, именованный список (namelist), менеджер очередей.

    Синтаксис:

    MQINQ (Hconn, Hobj, SelectorCount, Selectors,
           IntAttrCount, IntAttrs, 
           CharAttrLength, CharAttrs, 
           CompCode, Reason)

    где:

    Hconn - идентификатор связи с менеджером очередей, полученный от MQCONN
    Hobj - идентификатор объекта, полученный от MQOPEN
    SelectorCount - Счетчик атрибутов, которые должны быть извлечены (от 0 до 256)
    Selectors - Массив значений атрибутов, т.е. чисел или символов, которые должны быть извлечены
    IntAttrCount - Счетчик цифровых атрибутов
    IntAttrs - Массив цифровых атрибутов
    CharAttrLength - Длина буфера символьных атрибутов
    CharAttrs - Буфер значений символьных атрибутов
    CompCode - код завершения
    Reason - код ошибки, детализирующий код завершения.

    Комментарии. Буфер CharAttrs будет содержать значения символьных атрибутов в том же порядке, как перечислены атрибуты в Selectors. Многочисленные имена извлекаемых атрибутов приведены в главе "MQINQ – Inquire object attributes" [ 14 ] . Работа функций MQINQ и MQSET будет продемонстрирована позже на примере.

Вадим Горячев
Вадим Горячев
Россия
Artem Bardakov
Artem Bardakov
Россия