|В DB2 Версии 7.2 предоставляется набор функций MQSeries, которые |позволяют включать в операторы SQL операции по передаче сообщений. Это |значит, что такая поддержка доступна для программ, написанных на любом |поддерживаемом языке (например, на C, Java и SQL) с использованием любых |интерфейсов баз данных. Все примеры ниже написаны на SQL. Этот |SQL можно использовать из любого языка программирования любыми стандартными |способами. Поддерживаются все описанные выше модели передачи сообщений |MQSeries. Дополнительную информацию о функциях MQSeries можно найти в |Замечаниях по выпуску в разделе о справочнике SQL Reference.
|В базовой конфигурации сервер MQSeries находится на компьютере сервера баз |данных, там же, где и DB2. Функции MQSeries устанавливаются в DB2 и |обеспечивают доступ к серверу MQSeries. Клиенты DB2 могут находиться на |любом компьютере, доступном серверу DB2. Через базу данных к функциям |MQSeries могут одновременно обращаться несколько клиентов. С помощью |предоставленных функций клиенты DB2 могут выполнять операции по передаче |сообщений в операторах SQL. Эти операции по передаче сообщений |позволяют программам DB2 взаимодействовать между собой или с другими |программами MQSeries.
|Для включения функций MQSeries в базе данных DB2 используется команда |enable_MQFunctions. Она автоматически устанавливает простую |конфигурацию по умолчанию, которую программы клиентов могут использовать без |какого-либо дополнительного управления. Описание смотрите в разделах 20.6, enable_MQFunctions и 20.7, disable_MQFunctions. Конфигурация по умолчанию позволяет |разработчикам прикладных программ быстро получить начальный и более простой |интерфейс для разработки. Дополнительные функции можно конфигурировать, |наращивая их по необходимости.
|Пример 1: Оператор SQL для отправки простого сообщения с |использованием конфигурации по умолчанию должен выглядеть так:
|VALUES DB2MQ.MQSEND('простое сообщение')
|Этот оператор отправляет сообщение простое сообщение менеджеру |очередей MQSeries в очередь, заданную конфигурацией по умолчанию.
|Интерфейс MQSeries по отправке сообщений прикладных программ (AMI) |обеспечивает правильное разделение действий по передаче сообщений и |определения, где указывается, как эти действия должны быть выполнены. |Эти определения хранятся во внешнем файле репозитория, и ими можно управлять с |помощью средств управления интерфейсом AMI. Это упрощает разработку и |поддержку программ AMI. Функции MQSeries, поддерживаемые DB2, основаны |на интерфейсе MQSeries AMI. AMI поддерживает использование внешнего |файла конфигурации, называемого Репозиторием AMI, в котором хранится |информация о конфигурации. В конфигурацию по умолчанию входит |репозиторий AMI MQSeries, сконфигурированный под использование с DB2.
|В функциях Db2 MQSeries в интерфейсе AMI выдвигаются два ключевых |понятия: точки служб и правила. Точка службы - логическая |конечная точка, из которой может быть отправлено или получено |сообщение. В репозитории AMI каждая точка службы определяется с помощью |имени очереди и менеджера очередей MQSeries. Правила определяют опции |качества обслуживания (QoS), которые следует использовать для данной операции |по передаче сообщений. К ключевым опциям качества обслуживания |относятся приоритет и срок действия сообщений. Предоставляются точки |служб и определения правил по умолчанию, которые разработчики могут |использовать для дальнейшего упрощения своих программ. Чтобы явно |задать точку службы и имя правила по умолчанию, пример 1 можно переписать |так:
|Пример 2:
|VALUES DB2MQ.MQSEND('DB2.DEFAULT.SERVICE', 'DB2.DEFAULT.POLICY', 'простое сообщение')
|На сервере, где располагаются очереди и программы, очереди могут |обслуживаться одной или несколькими программами. Во многих |конфигурациях для поддержки различных программ и возможностей будет задаваться |ряд очередей. По этой причине при создании требований MQSeries, как |правило, важно задать разные точки служб. Это показано в следующем |примере:
|Пример 3:
|VALUES DB2MQ.MQSEND('ODS_Input', 'простое сообщение')
|
|MQSeries предоставляет возможность сочетать операции по передаче сообщений |и операции баз данных в одной единице работы как в элементарной |транзакции. Эта возможность изначально не поддерживается функциями |MQSeries в Unix и Windows.
|При использовании функций отправки или получения сообщений максимальная |длина сообщений типа VARCHAR составляет 4000 символов. Максимальная |длина отправляемых или принимаемых сообщений типа CLOB - 1 Мбайт. Эти |значения являются также максимальными размерами сообщений при публикации |сообщений с использованием MQPublish.
|Для работы с сообщениями типа CLOB и типа VARCHAR иногда требуются разные |функции. Обычно в версии CLOB функции MQ используется тот же синтаксис, |что и в соответствующей функции VARCHAR. Единственная разница - в |наличии в конце имени функции символов CLOB. Например, эквивалент |функции MQREAD для CLOB называется MQREADCLOB. Подробный список этих |функций смотрите в разделе 43.6.3, Функции MQSeries теперь поддерживают данные CLOB.
|Коды возврата, возвращаемые функциями MQSeries, можно найти в Приложении B |руководства Application Messaging Interface Manual.