Концепция: Служба сообщений Java (JMS)
Этот раздел содержит подробное описание Службы сообщений Java (JMS).
Взаимосвязи
Связанные элементы
Основное описание

Введение

Служба сообщений 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/.