Компания IBM
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 1529 / 139 | Оценка: 4.36 / 3.98 | Длительность: 16:32:00
ISBN: 978-5-9556-0031-4
Специальности: Системный архитектор
Лекция 13:

Брокер сообщений WebSphere BI Message Broker

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >

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

Разработчики 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:

DECLARE C1 INTEGER;
SET C1 = CARDINALITY(
    Root.XML."BOOK"."CHAPTER"[]);
DECLARE I INTEGER; SET I = 1; 
WHILE I <=C1 DO
INSERT INTO Database.BOOK(TITLES) VALUES (
    Root.XML."BOOK"."CHAPTER"[I]."TITLE");
SET I=I+1; 
END WHILE;

Администрирование брокера сообщений. Функционирование брокера сообщений требует инструментальных средств, которые должны поддерживать полный цикл жизнедеятельности брокера, начиная со средств разработки новых форматов и процедур обработки, включая инструменты тестирования и отладки, и кончая механизмами администрирования и мониторинга работы брокера и диагностики проблем. В WebSphere Message Broker используется единая интегрированная среда WebSphere Message Broker Toolkit, которая является универсальным инструментарием и для разработчика и для администратора.

Message Broker Toolkit построен на базе открытой технологии Eclipse и имеет ряд представлений, объединенных в единую графическую оболочку. Представление разработчика Broker Application Development позволяет работать с внутренним репозиторием форматов MRM. Форматы для наборов сообщений могут определяться путем визуального конструирования, как методом последовательной детализации сложных форматов сверху вниз, так и составлением новых форматов из уже существующих более простых форматов и элементов. Форматы могут быть импортированы и экспортированы, в частности из таких источников как заголовочные файлы языка С или СОBOL, файлы экспортированных метаданных MQ Integrator, схемы и DTD файлы для XML документов и т.д.

Графический построитель потоков обработки ( Message flows ) - основное средство разработки прикладной логики брокера. Именно при помощи этой составляющей разработчики конструируют схемы обработки сообщений из обработчиков. Важной функцией является переключение из режима конструирования потока в режим тестирования потока сообщений. Расставив контрольные точки в различных местах потока обработки, разработчики имеют возможность получать в этих точках полную развернутую информацию о структуре проходящих сообщений с прикладными и служебными атрибутами. Тестирование позволяет детально отслеживать процесс обработки сообщений в брокере и получить информацию о проблемах.

Используя представление администратора Broker Administration, пользователь может назначать разработанные потоки обработки брокерам на исполнение, возвращать потоки обратно в состояние разработки и динамически распространять сделанные программистами изменения на уже работающие потоки. Через это представление администратор определяет общую топологию среды распределенных брокеров WebSphere Message Broker, которые могут физически функционировать на различных операционных системах, в частности WindowsNT/2000/XP, Linux, UNIX, OS/390(z/OS), а логически могут образовывать иерархически построенные коллективы брокеров. Представление отображает состояние действующих брокеров и потоков обработки. Администратор WebSphere Message Broker может активизировать или приостановить работу отдельного потока, а также выполнять трассировку потоков разработки. Наконец, в журнале брокера отражаются успешные или неуспешные административные операции WebSphere Message Broker. В отношении использования Message Broker Toolkit остается упомянуть о возможностях групповой разработки, персональных настройках среды и разграничении функций в соответствии с ролями.

Проблема производительности и внутренняя архитектура. При всех своих достоинствах и богатой функциональности интеграционный брокер имеет и недостатки. В частности, поскольку брокер представляет собой единую фокусную точку для взаимодействия многих приложений, возрастает вероятность появления ошибок и сбоев именно в этой точке. Соответственно повышаются требования по надежности, производительности и масштабируемости внутренней архитектуры самого брокера.

Внутренняя работа каждого брокера Message Broker управляется специальным процессом-контролером. За взаимодействие с сервером конфигурации и ведение внутренних данных брокера и кэш-таблиц отвечает особый процесс - агент брокера.

Для непосредственной обработки сообщений существуют процессы - исполнительные группы. На этапе конфигурирования системы каждый поток обработки назначается исполнительной группе. Внутри каждой исполнительной группы может быть задействовано до 256 отдельных подпроцессов - трэдов (thread). При появлении нового сообщения во входной очереди потока обработки, для исполнения потока назначается свободный трэд исполнительной группы, а следующий свободный трэд начинает наблюдать за входной очередью в режиме ожидания. Новые сообщения в очереди активизируют новые экземпляры потока обработки.

Расширение функциональности: обработчики и парсеры. WebSphere Message Broker позволяет расширять свою функциональность путем создания новых обработчиков для программирования типичных функций и встраивать собственные разборщики-парсеры для разбора специализированных форматов сообщений. Среди уже существующих дополнительных обработчиков, которые можно свободно взять с сайта поддержки Support packs следует отметить: Sendmail - для посылки электронной почты; LDAP, FTPSend - посылки файла по FTP; MQGet, ExecuteTime, CICS Client, XSLT, EJB; парсеры - для сообщений со спецификацией HL7 для учреждений здравоохранения; для документов SAP IDOC прикладного пакета R/3 фирмы SAP; для сообщений спецификации ACORD AL3 из страховой индустрии; для сообщений спецификации финансовой информации FIX.

Взаимодействие с системами управления бизнес-процессами. Системы управления бизнес - процессами или workflow systems предоставляют возможности моделировать сложные деловые процессы на предприятиях и затем обеспечивать их исполнение и мониторинг, включая автоматические функции распределения назначений, ответственности и данных между людьми и прикладными системами в соответствии с моделью делового процесса.

Системы управления бизнес - процессами дают возможность отделять среду моделирования, управления и контроля исполнения деловых процессов от внутренней закодированной логики прикладных систем, что позволяет гибко изменять деловые процессы в соответствии с развитием бизнеса.

Системы управления бизнес-процессами и брокеры сообщений взаимно дополняют друг друга, соединяя функции управления бизнес-процессами с функциями трансформации и распределения данных. Например, если для какого-либо бизнес-процесса системы управления необходимо сделать запрос к какой-либо внешней системе или выполнить внешнюю функцию, то подобный внешний вызов в системе управления бизнес-процессами WebSphere MQ Workflow реализуется в виде XML сообщения. Затем оно может быть получено и преобразовано брокером сообщений в сообщение формата внешней системы или обработано на самом брокере. Результат выполнения будет возвращен в систему управления бизнес-процессами WebSphere MQ Workflow и воспринят, как окончание очередной стадии бизнес процесса. В другом случае, сообщение от внешней системы прошедшее через брокер, может вызвать старт бизнес-процесса под контролем системы управления WebSphere MQ Workflow. При этом система управления бизнес-процессами может реализовать в интересах брокера сложную логику разбора и обработки сообщения.

Количество интеграционных задач в вычислительной среде современного предприятия стремительно растет и потребность в интеграционном программном обеспечении очевидна. Системы очередей сообщений являются сегодня фундаментом интеграционных программных технологий. На базе очередей сообщений вместе с компонентами промежуточной обработки, такими как интеграционные брокеры, адаптеры, обработчики и технологии открытых интерфейсов WebServices возникает новый стратегический класс программного обеспечения - корпоративная сервисная шина ( Enterprise Services Bus - ESB), который должен стать базовым слоем современной вычислительной корпоративной архитектуры.

< Лекция 12 || Лекция 13: 1234 || Лекция 14 >