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

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

  1. MQPUT – функция для записи сообщений в очередь.

    Синтаксис:

    MQPUT (Hconn, Hobj, MsgDesc, PutMsgOpts, 
           BufferLength, Buffer, CompCode, Reason)

    где:

    Hconn - идентификатор связи с менеджером очередей, полученный от MQCONN
    Hobj - идентификатор объекта, полученный от MQOPEN
    MsgDesc - описание сообщения MQMD
    PutMsgOpts - опции MQPMO для записи сообщений
    BufferLength - длина буфера Buffer, откуда пишется сообщение. Значение 0 является действительным и показывает, что сообщение не содержит данных.
    Buffer - буфер, из которого пишется сообщение
    CompCode - код завершения, принимающий одно из трех значений: MQCC_OK, MQCC_WARNING, MQCC_FAILED
    Reason - код ошибки, детализирующий код завершения.

    Параметры Hconn, Hobj, MsgDesc, BufferLength, Buffer, CompCode, Reason – такие же, как и в функции MQGET . Исключение составляет PutMsgOpts – опция MQPMO (Put-message options), служащая для того, чтобы положить сообщение в очередь. Поля структуры MQPMO приведены в таблице 8.5.

    Таблица 8.5. Поля структуры MQPMO
    Имя поля MQPMO Тип поля Описание поля Имя константы Значение по умолчанию
    StrucId MQCHAR4 Идентификатор структуры MQPMO_STRUC_ID 'PMOb'
    Version MQLONG Номер версии структуры MQPMO_VERSION_1 1
    Options MQLONG Опции для управления MQPUT и MQPUT1 MQPMO_NONE 0
    Timeout MQLONG Зарезервировано Нет -1
    Context MQHOBJ Идентификатор объекта входной очереди Нет 0
    KnownDestCount MQLONG Число сообщений, посланное успешно в локальную очередь Нет 0
    UnknownDestCount MQLONG Число сообщений, посланное успешно в удаленную очередь Нет 0
    InvalidDestCount MQLONG Число сообщений, которые возможно не посланы Нет 0
    ResolvedQName MQCHAR48 Разрешенное имя очереди назначения Нет Строка Null или пробел
    ResolvedQMgrName MQCHAR48 Разрешенное имя менеджера назначения Нет Строка Null или пробел
    RecsPresent MQLONG Число записей помещенных сообщений или ответных записей в настоящее время Нет 0
    PutMsgRecFields MQLONG Флаг, индицирующий, что MQPMR поле присутствует MQPMRF_NONE 0
    PutMsgRecOffset MQLONG Погашение записи первого помещенного сообщения с момента старта MQPMO Нет 0
    ResponseRecOffset MQLONG Погашение записи первого ответа с момента старта MQPMO Нет 0
    PutMsgRecPtr MQPTR Адрес записи первого помещенного в очередь сообщения Нет Указатель Null
    ResponseRecPtr MQPTR Адрес записи первого ответа Нет Указатель Null

    Среди опций для управления MQPUT следует назвать:

    • MQPMO_NEW_MSG_ID - генерирует новый идентификатор сообщения
    • MQPMO_NEW_CORREL_ID - генерирует новый корреляционный идентификатор и заменяет поле CorrelId в опции MQMD этим идентификатором.
    • MQPMO_LOGICAL_ORDER - определяет, что сообщения в группах и сегментах пишутся в логическом порядке.
    • MQPMO_FAIL_IF_QUIESCING - выдает ошибку, если менеджер не доступен.
    • MQPMO_SYNCPOINT ( MQPMO_NO_SYNCPOINT ) - означает установку (отмену установки) контрольной точки (syncpoint control) на данном сообщении.
    • MQ_MSG_HEADER_LENGTH - определяется для очереди передачи (transmission queue)

    Полный список опций MQPMO дан в главе "MQPUT – Put message" [ 14 ] .

    Функция MQPUT может положить сообщение как в локальную (local queue), так и в удаленную очередь (remote queue). MQGET считывает сообщения только из локальной очереди локального менеджера очередей, но не может читать сообщения на удаленном менеджере.

  2. MQCLOSE – функция, закрывающая подключение к очереди, с которой работает приложение.

    Синтаксис:

    MQCLOSE (Hconn, Hobj, Options, 
             CompCode, Reason)

    где:

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

    Синтаксис:

    MQDISC (Hconn, CompCode, Reason)

    где:

    Hconn - идентификатор связи (connection handle) с менеджером очередей
    CompCode - код завершения
    Reason - код ошибки

Для работы приложений в условиях промышленной эксплуатации необходимо использовать дополнительные функции WebSphere MQ.