Программирование WebSphere MQ
Интерфейс очередей сообщений MQI (Message Queuing Interface) в WebSphere MQ для различных программно-аппаратных платформ - от DOS до OS/390 - один и тот же. Его основным свойством является идентичность команд и параметров для различных систем и возможность применения при различных языках программирования. Ниже приведен пример использования одной из команд MQI в различных форматах: формате управления системой с использованием консоли управления, в формате языка С и языка COBOL:
MQPUT1 (Hconn, ObjDesc, MsgDescr, PutMsgOpts, BufferLength, Buffer, CompCode, Reason)
MQPUT1 (Hconn, &ObjDesc, &MsgDescr, &PutMsgOpts, BufferLength, Buffer, &CompCode, &Reason)
CALL "MQPUT1" USING HCONN, OBJECT-DESCRIPTOR, MESSAGE-DESCRIPTOR, PMOPTIONS, DATA-LENGTH, REPLY, COMPLETION-CODE, REASON
Данная команда осуществляет помещение объекта в указанную очередь с использованием определенного набора опций. Результат выполнения команды и/или причины неудачи возвращаются функцией как выходные параметры. Для работы с очередью предварительно должно быть установлено соединение с менеджером очередей - дальнейшее взаимодействие осуществляется с использованием возвращенного на этой стадии параметра Hconn.
Как видно из примера, процесс помещения информации в очередь достаточно прост и реализован единообразно для различных программно-аппаратных платформ.
К базовым функциям MQI относятся:
- MQCONN - устанавливает соединение с системой;
- MQOPEN - открывает объект для дальнейшей работы с ним;
- MQPUT - помещение информации в очередь;
- MQGET - извлечение информации из очереди;
- MQCLOSE - завершение работы с объектом;
- MQDISC - окончание соединения с системой;
- MQCMIT и MQBACK - для работы с транзакциями и пр.
Используя MQI, приложение может осуществлять все необходимые действия с системой очередей - от открытия соединения до просмотра сообщений в очереди.
Кроме того, разработчик имеет возможность поместить свой код для реагирования на те или иные события в так называемые exits. В системе WebSphere MQ присутствует несколько типов exit (channel, client, conversion и пр.) - в зависимости от действий, производимых с сообщением/очередью. Создавая собственный exit, разработчик получает возможность реализовать необходимую функциональность при обработке сообщений.