Интеграция приложений на основе WebSphere MQ

Дополнительные функции 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Тип поляИмя поляИмя константыЗначение константы
    StrucIdMQCHAR4Идентификатор структурыMQBO_STRUC_ID'BObb'
    VersionMQLONGНомер версии структурыMQBO_VERSION_11
    OptionsMQLONGОпции для управления MQBOMQBO_NONE0

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

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

    Синтаксис:

    MQCMIT (Hconn, CompCode, Reason)

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

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




    Синтаксис:

    MQBACK (Hconn, CompCode, Reason)

    Работа функций MQBEGIN, MQCMIT и MQBACK будет на примере продемонстрирована в лекции 9.

    Следующие группы функций позволяют считывать и модифицировать атрибуты 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 будет продемонстрирована позже на примере.





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

  • MQCONNХ – функция, которая обеспечивает подключение приложения к менеджеру очередей.

    Синтаксис:

    MQCONNХ (QMgrName, ConnectOpts, Hconn, CompCode, Reason)

    Функция MQCONNХ отличается от MQCONN наличием параметра ConnectOpts для контроля процесса подключения к менеджеру очередей и позволяет установить дополнительные опции. Опции MQCNO_STANDARD_BINDING и MQCNO_FASTPATH_BINDING служат для стандартного или быстрого установления связи. Опции MQCNO_HANDLE_SHARE_NONE, MQCNO_HANDLE_SHARE_BLOCK, MQCNO_HANDLE_SHARE_NO_BLOCK позволяют осуществлять управление идентификаторами связи при работе с разными процессами (threads).

    Опции SSLConfigPtr и SSLConfigOffset используются, когда приложение осуществляет вызов MQCONNХ через WebSphere MQ клиента по протоколу TCP/IP. Более подробно эти опции описаны в главе "MQCNO – Connect options" [14].

  • MQPUT1 – функция, которая помещает одно сообщение в очередь, при этом очередь не должна быть открыта. Функция MQPUT1 по сравнению с MQPUT не требует команды MQOPEN и MQCLOSE.

    Синтаксис:

    MQPUT1 (Hconn, ObjDesc, MsgDesc, PutMsgOpts, BufferLength, Buffer, CompCode, Reason)

    Как следствие такого определения функции вместо параметра Hobj для MQPUT в MQPUT1 используется параметр ObjDesc, как и в функции MQOPEN.



  • На этом обзор основных и дополнительных функций WebSphere MQ закончен. Теперь можно начинать писать первые приложения для WebSphere MQ, что и будет сделано в следующей лекции.

    В заключении следует отметить, что разработчикам приложений необходимо выбирать язык программирования исходя из решаемой задачи и требований на создаваемое ПО. Если приложение должно работать с WebSphere MQ в режиме промышленной эксплуатации при достаточно высоких требованиях на производительность, то рекомендуется использовать С, С++. Если приложение работает с WebSphere MQ в тестовом режиме без ограничений на производительность, то вполне подойдут Visual Basic 6.0 или Power Builder 6.0. Известны случаи, когда приложение, написанное на Visual Basic 6.0 или Power Builder 6.0 и работающее постоянно с WebSphere MQ, начинало наращивать используемую оперативную память, и разработчики этих программ не могли понять причину ошибки и устранить ее. Приложение, написанное на С++ и реализующее тот же алгоритм, не имеет подобного дефекта. Красивые интерфейсы при работе с WebSphere MQ требуются не так часто. Кроме того, следует отметить, что приложение на C/С++ обеспечивает обработку более 400 Persistent сообщений/секунду при длине сообщения 1Кбайт, в то время как приложение с тем же алгоритмом обработки на Visual Basic - не более 150 сообщений/секунду на компьютере INTEL Pentium 1.8Ггц. Все это объясняет тот факт, что в данной книге примеры программ даются на языке С.

    © 2003-2007 INTUIT.ru. Все права защищены.

    Содержание раздела