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



              

Средства программирования и администрирования брокера сообщений


Разработчики WebSphere Message Broker создали в составе своего продукта язык ESQL, который как и все языки скриптов имеет очевидные преимущества: простота и удобство. В языке ESQL получил развитие широко используемый процедурный SQL, который был дополнен языковыми средствами для манипулирования с сообщениями разнообразных форматов. Краткое описание функциональных возможностей и основ программирования на ESQL заняло бы десяток страниц, поэтому здесь следует ограничиться некоторыми примерами кода на этом языке. Простое и наиболее часто встречающееся выражение ESQL:

SET OutputRoot = InputRoot;

означает, что входящее сообщение на данном обработчике полностью копируется в выходное сообщение.

Следующий пример показывают применение встроенных функций - строковой функции SUBSTRING, функции преобразования типа CAST, временных функций INTERVAL, DATE:

SET "OutputRoot"."MRM"."RATES" = SUBSTRING( "InputBody"."ratedate" FROM 1 FOR 9); SET OutputRoot.XML."Days" = CAST( EXTRACT (DAY FROM INTERVAL ( CURRENT_DATE-DATE'2000-01-01')) AS CHAR);

Очередной пример иллюстрирует случай, когда информация о формате сообщения содержится в закодированном виде в прикладной части самого сообщения, случай типичный для закрытых или унаследованных систем. В приведенном примере информация о формате содержится в неявном виде в первых двух байтах сообщения. Вначале считая, что тело пришедшего сообщения бинарный объект BLOB, выделяется и проверяется значение первых двух байтов и переопределяется закодированный формат. После определения формата происходит переопределение типа сообщения в свойствах OutputRoot.Properties:

DECLARE TermId BLOB; SET TermId = SUBSTRING("InputBody"."BLOB" FROM 1 FOR 2); IF TermId = X'3031' THEN SET OutputRoot.Properties.MessageSet = 'ABC1234567890'; SET OutputRoot.Properties.MessageType = 'm_PERSON'; END IF;

Последний пример показывает одновременное использование операций с сообщением и обычного SQL, а именно ввод данных из сообщения во внешнюю реляционную базу данных, при этом для определения заранее неизвестного количества повторяющихся элементов в сообщении используется функции CARDINALITY:




Содержание  Назад  Вперед