В 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. Она автоматически устанавливает простую конфигурацию по умолчанию, которую программы клиентов могут использовать без какого-либо дополнительного управления. Описание этих команд смотрите в разделах enable_MQFunctions и 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.
При использовании функций отправки или получения сообщений максимальная длина сообщений составляет 4000 символов. Это значение является также максимальным размером сообщения при публикации сообщений с использованием MQPublish.
Коды возврата, возвращаемые функциями MQSeries, можно найти в Приложении B руководства Application Messaging Interface Manual.