Введение
Служба сообщений Java, JMS, предоставляет межплатформный стандарт для асинхронного обмена бизнес-данными и событиями в
предприятии. Обмен информацией обычно происходит между процессами и компьютерами. Объекты в приложениях, обычно
работающих на разных компьютерах, обмениваются информацией, обращаясь к службам промежуточного программного
обеспечения, ориентированного на работу с сообщениями (MOM), через стандартный набор интерфейсов, определенный в JMS.
JMS предоставляет набор интерфейсов, изолирующих программиста на Java (реализующего поставщики и приемники сообщений)
от провайдеров MOM.
Эта страница информационного наполнения описывает основные концепции и типичное применение JMS.
Сообщения
Сообщение - это отдельный пакет бизнес-данных. Оно состоит из трех блоков:
-
Заголовок: содержит информацию о сетевой маршрутизации и идентификаторы сообщений.
-
Свойства: содержит метаданные сообщения. Часть свойств задается службой JMS, однако прикладные программисты
могут добавить и собственные свойства.
-
Полезная нагрузка: содержит фактические бизнес-данные. Полезная нагрузка целиком контролируется прикладным
программистом.
В JMS сообщение инкапсулируется в объект, реализующий интерфейс javax.jms.Message. Программа на Java может
обращаться к блокам сообщения через этот интерфейс, как показано на следующей диаграмме. У полезной нагрузки может быть
несколько разновидностей, обсуждаемых ниже.
Заголовок содержит обязательные свойства сообщения. Это следующие свойства:
-
MessageID
-
Timestamp
-
CorrelationID
-
ReplyTo
-
Destination
-
DeliveryMode
-
Redelivered
-
Type
-
Expiration
-
Priority
Свойства позволяют прикладному программисту предоставлять метаданные для сообщения. Свойства состоят из
произвольного набора пар имя-значение.
JMS поддерживает шесть видов полезной нагрузки:
-
Текстовые сообщения
-
Объектные сообщения
-
Байтовые сообщения
-
Сообщения отображения
-
Потоковые сообщения
-
Пустые сообщения (тело отсутствует)
Типы полезной нагрузки отражены в иерархии классов, в которой интерфейсы расширяют javax.jms.Message. На
следующей диаграмме классов показаны часто используемые текстовые, объектные и байтовые сообщения. Текстовые сообщения
обычно содержат данные XML.
Места назначения
JMS определяет концепцию места назначения. Сообщения отправляют и получают из мест назначения. Места назначения бывают
двух видов:
Очереди - это места назначения сообщений, применяемые, когда сообщения обрабатываются только одним получателем.
Если сравнивать рассылку сообщений с обычной почтой, то очереди - это почтовые ящики, принадлежащие конкретному
адресату. Обмен информацией с помощью очередей называется двухточечной связью.
Темы - это места назначения сообщений, применяемые, когда сообщения необходимо доставить нескольким получателям,
каждый из которых интересуется сообщениями определенного типа. Вновь пользуясь аналогией с обычной почтой, такие
сообщения можно сравнить с газетной статьей; сообщение может прочесть любое число получателей. Такой способ связи часто
называют публикацией и подпиской.
Доставка сообщений
Доставка сообщений может быть двух типов:
Постоянная доставка предусматривает хранение сообщения в файле или базе данных, что означает гарантированную доставку.
Непостоянная доставка выполняется быстрее и не требует таких затрат памяти, но доставка сообщения не гарантируется. В
большинстве приложений, работающих с JMS, обычно применяется постоянная доставка.
Клиенты JMS
Клиенты JMS - это объекты Java, использующие JMS. Определены две роли:
-
Поставщики сообщений: программы на Java, создающие и отправляющие сообщения.
-
Приемники сообщений: программы на Java, получающие сообщения.
На следующей диаграмме представлена схема взаимодействия поставщика, приемников и провайдеров
JMS.
Поставщиком сообщений может быть любой класс Java, у которого есть доступ к реализации JMS. Поставщики сообщений
создают и отправляют сообщения.
Приемником сообщений может быть любой класс Java, у которого есть доступ к реализации JMS. Приемники сообщений
принимают и обрабатывают сообщения.
Клиент JMS использует набор интерфейсов для доступа к JMS. Объекты, реализующие интерфейсы JMS, создаются посредством
набора фабрик. Начальная фабрика - это фабрика соединений, ConnectionFactory. Поиск фабрики соединений
выполняется с помощью JNDI. Используя фабрику соединений, клиент JMS создает объект соединения. С помощью объекта
соединения создается сеансовый объект, который служит фабрикой для остальных объектов JMS. На следующем рисунке
показаны основные концептуальные взаимосвязи между фабриками; сведения об очередях и темах опущены.
Фабрики соединений, соединения и сеансы могут быть двух видов: один предназначен для очередей, другой - для тем. На
следующей диаграмме классов показана иерархия интерфейсов для основных концепций JMS.
Провайдеры JMS
Провайдер JMS - это реализация, удовлетворяющая спецификации JMS. Провайдер JMS отвечает за прием, хранение и доставку
сообщений.
Дополнительная информация
Дополнительная информация о JMS приведена на Web-сайте http://java.sun.com/products/jms/.
|