Программный интерфейс MQI. Основные функции
-
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 считывает сообщения только из локальной очереди локального менеджера очередей, но не может читать сообщения на удаленном менеджере.
-
MQCLOSE – функция, закрывающая подключение к очереди, с которой работает приложение.
Синтаксис:
MQCLOSE (Hconn, Hobj, Options, CompCode, Reason)
где:
-
MQDISC - функция для отключения приложения от менеджера очередей
Синтаксис:
MQDISC (Hconn, CompCode, Reason)
где:
Для работы приложений в условиях промышленной эксплуатации необходимо использовать дополнительные функции WebSphere MQ.