Создание приложений для доступа к инфраструктуре WebSphere MQ
4.7. Обмен по принципу публикации-подписки
Обмен сообщениями по принципу публикации-подписки требует применения брокера публикации-подписки, который ведет учет подписки на конкретные темы и обеспечивает возможность публикации тематических сообщений.
4.7.1. Брокер публикации-подписки WebSphere MQ
WebSphere MQ содержит встроенный брокер, для выполнения функций публикации и подписки, использующий базовые возможности WebSphere MQ.
Брокер публикации-подписки WebSphere MQ использует инфраструктуру очередей сообщений WebSphere MQ для приема и обработки команд, учета подписки, хранения текущей статусной информации, а также как механизм доставки при отправке публикаций подписчикам. Гарантию однократной доставки брокер наследует от системы.
Подробнее о публикации и подписке в WebSphere MQ читайте в следующих руководствах:
- WebSphere MQ Publish/Subscribe User’s Guide, SC34-6606
- WebSphere Business Integration Pub/Sub Solutions, SG24-6088
- MQSeries Publish/Subscribe Applications, SG24-6282
Каждый менеджер очередей может управлять максимум одним брокером, имеющим то же название в инфраструктуре, что и менеджер очередей, на котором он расположен. Брокеры могут объединяться в сеть брокеров (broker network), давая возможность приложениям, связанным с одним менеджером, получать публикации в адрес брокера под управлением другого менеджера.
4.7.2. Взаимодействие с брокером публикации-подписки WebSphere MQ
Брокер публикации-подписки WebSphere MQ имеет набор команд, которые можно посылать брокеру по интерфейсу "запрос – ответ". Команды выполняют такие функции, как регистрация приложения как подписчика и публикация сообщения на определенную тему.
Интерфейс брокера "запрос – ответ" для каждого менеджера очередей использует очередь, именуемую очередью управления брокером (broker control queue).
Такие стандартизованные API, как Java Message Service (JMS), могут упростить интерфейс с брокером, сделав необязательными явное формирование и передачу ему команд.
4.7.3. Потоки
Всю массу тематической информации брокер может разбивать на потоки (streams). Публикация по теме в одном потоке не рассылается подписчикам этой темы, зарегистрированным на другие потоки. Подписка и другая необходимая информация хранится в отдельной очереди WebSphere MQ для каждого из потоков.
4.7.4. Регистрация
Прежде чем получить возможность принимать публикации, каждый подписчик должен быть зарегистрирован брокером. Регистрация требует наличия у подписчика очереди, где могут располагаться приходящие от брокера публикации.
Очередь может являться собственной очередью подписчика или использоваться несколькими подписчиками совместно. Если очередь для подписки делится между несколькими подписчиками, при регистрации подписчик должен предоставить корреляционный идентификатор сообщения. Он служит в целях опознавания права собственности на сообщения в очереди. Аналогичные проблемы существуют при выборе очереди подписчика, о чем мы говорили в "разделе 4.6.14" "Реализация очереди ответов".
Источнику публикаций не требуется регистрации брокером до начала публикации сообщений. Однако он все же может зарегистрироваться в целях настройки некоторых аспектов поведения по умолчанию, касающихся осуществляемых публикаций и уведомления брокера о темах, по которым производится публикация. Публикация вправе содержать любые произвольные данные, которые могут входить в тело сообщения WebSphere MQ и описаны в "разделе 4.1" "Кроссплатформенная поддержка".
4.7.5. Темы
Темы определяются брокером по символьным строкам, называемым строкой темы (topic string). Эти строки есть в каждой из публикаций любого источника публикации.
При регистрации брокером подписчик также задает строку темы. В дальнейшем его строка темы будет сравниваться с темой каждой из публикаций. Если две строки совпадают, публикация ставится в очередь, заданную подписчиком при его регистрации. Посимвольное совпадение строк совершенно необязательно, – в теме, которую при регистрации указывает подписчик, могут находиться символы обобщения, позволяющие оформить подписку на диапазон тем.
Регистрация не прекращается и в том случае, когда приложение-подписчик не выполняется. Это значит, что публикации будут накапливаться в очереди подписчика, пока тот является неактивным.
4.7.6. Публикации
В WebSphere MQ публикации бывают двух видов.
- Несохраняемые публикации (non-retained publications).
По умолчанию брокер WebSphere MQ удаляет публикации после их постановки в очередь всех соответствующих зарегистрированных подписчиков.
- Сохраняемые публикации (retained publications).
Источник публикации может потребовать, чтобы одна конкретная или все публикации от его имени сохранялись. Каждый раз при обработке публикации брокером она будет доставляться в очереди всех соответствующих зарегистрированных подписчиков, а ее копия будет сохранена брокером. По каждой отдельной теме брокер хранит лишь копию последней по времени публикации.
Одним из частных примеров пользования сохраняемыми публикациями является хранение данных о состоянии. При публикации их в таком виде подписчик, начиная свою работу, может запросить текущее состояние по некоторой теме. В итоге, чтобы определить актуальное состояние, ему не нужно ждать публикации по своей теме.
4.7.7. Развитие функций публикации и подписки в WebSphere MQ
Брокер публикации-подписки WebSphere MQ реализует базовые возможности, необходимые для пользования моделью обмена сообщениями по принципу публикации-подписки. Однако источник и поставщик информации могут быть разделены еще больше, что лишь сильнее упрощает создание и внедрение бизнес-служб.
Полноценное раскрытие потенциала модели публикации-подписки может позволить внедрить такую инфраструктуру сообщений, в которой разнообразные приложения смогут обмениваться информацией в разной форме, а поток данных контролируется, маршрутизируется и трансформируется при помощи бизнес-правил, а не закрытой логики.
IBM WebSphere Business Integration Message Broker и WebSphere Business Integration Event Broker – это отдельные брокеры, основанные на базовых функциях работы с сообщениями WebSphere MQ и максимально использующие возможности модели публикации-подписки.