Jakarta сообщений API (ранее Служба сообщений Java или JMS API) представляет собой Java - интерфейс прикладного программирования (API) для сообщений , ориентированных на ПО промежуточного слоя . Он предоставляет общие модели обмена сообщениями, способные справиться с проблемой производителя и потребителя , которые можно использовать для облегчения отправки и получения сообщений между программными системами . [1] Jakarta Messaging является частью Jakarta EE и изначально была определена спецификацией, разработанной в Sun Microsystems, прежде чем руководствоваться процессом сообщества Java . [2]
Общее представление об обмене сообщениями
Обмен сообщениями - это форма слабосвязанной распределенной коммуникации, где в этом контексте термин «коммуникация» можно понимать как обмен сообщениями между программными компонентами. Технологии, ориентированные на сообщения, пытаются ослабить тесную связь (например, сетевые сокеты TCP , CORBA или RMI ) путем введения промежуточного компонента. Такой подход позволяет программным компонентам косвенно взаимодействовать друг с другом. Преимущества этого заключаются в том, что отправители сообщений не нуждаются в точных знаниях своих получателей.
Преимущества обмена сообщениями включают в себя возможность интеграции разнородных платформ, уменьшение количества узких мест в системе, повышение масштабируемости и более быстрое реагирование на изменения. [3]
История версий
- JMS 1.0 [4]
- JMS 1.0.1 (5 октября 1998 г.) [4]
- JMS 1.0.1a (30 октября 1998 г.) [5] [6]
- JMS 1.0.2 (17 декабря 1999 г.) [7]
- JMS 1.0.2a (23 декабря 1999 г.) [8]
- JMS 1.0.2b (27 августа 2001 г.) [9]
- JMS 1.1 (12 апреля 2002 г.) [10]
- JMS 2.0 (21 мая 2013 г.) [11] [12]
- JMS 2.0a (16 марта 2015 г.) [13] [14]
JMS 2.0 в настоящее время поддерживается в рамках процесса сообщества Java как JSR 343. [15]
JMS 3.0 находится на ранней стадии разработки как часть Jakarta EE. [16]
Элементы
Ниже приведены элементы JMS: [17]
- JMS-провайдер
- Реализация интерфейса JMS для промежуточного программного обеспечения, ориентированного на сообщения (MOM). Провайдеры реализованы либо как реализация Java JMS, либо как адаптер для MOM, отличного от Java.
- Клиент JMS
- Приложение или процесс, который создает и / или принимает сообщения.
- Производитель / издатель JMS
- Клиент JMS, который создает и отправляет сообщения.
- Потребитель / подписчик JMS
- Клиент JMS, получающий сообщения.
- Сообщение JMS
- Объект, содержащий данные, передаваемые между клиентами JMS.
- Очередь JMS
- Промежуточная область, содержащая сообщения, которые были отправлены и ожидают чтения (только одним потребителем). Как следует из очереди имен, сообщения доставляются в порядке отправки. Очередь JMS гарантирует, что каждое сообщение обрабатывается только один раз.
- Тема JMS
- Механизм распространения для публикации сообщений, которые доставляются нескольким подписчикам.
Модели
JMS API поддерживает две различные модели:
- Точка-точка
- Опубликовать и подписаться
Двухточечная модель
В системе обмена сообщениями точка-точка сообщения направляются отдельным потребителям, которые поддерживают очереди входящих сообщений. Этот тип обмена сообщениями основан на концепции очередей сообщений , отправителей и получателей. Каждое сообщение направляется в определенную очередь, и принимающие клиенты извлекают сообщения из очередей, установленных для хранения своих сообщений. Хотя любое количество производителей может отправлять сообщения в очередь, каждое сообщение гарантированно будет доставлено и использовано одним потребителем. В очередях сохраняются все отправленные им сообщения до тех пор, пока сообщения не будут использованы или пока срок их действия не истечет. Если потребители не зарегистрированы для приема сообщений, очередь удерживает их до тех пор, пока потребитель не зарегистрируется для их использования.
Модель публикации и подписки
Модель публикации и подписки поддерживает публикацию сообщений в определенной «теме» сообщения. Подписчики могут проявить интерес к получению сообщений, опубликованных по определенной теме сообщения. В этой модели ни издатель, ни подписчик не знают друг о друге. Хорошая аналогия - анонимная доска объявлений.
- Сообщение получат ноль или более потребителей.
- Между издателями и подписчиками существует временная зависимость. Издатель должен создать тему сообщения, чтобы клиенты могли подписаться. Подписчик должен оставаться активным, чтобы получать сообщения, если только он не установил длительную подписку. В этом случае сообщения, опубликованные, пока подписчик не подключен, будут перераспределяться при повторном подключении.
JMS позволяет отделить приложение от транспортного уровня предоставления данных. Одни и те же классы Java могут использоваться для связи с разными поставщиками JMS с помощью информации Java Naming and Directory Interface (JNDI) для требуемого поставщика. Классы сначала используют фабрику соединений для подключения к очереди или теме, а затем используют заполнение и отправку или публикацию сообщений. На принимающей стороне клиенты затем получают сообщения или подписываются на них.
Схема URI
RFC 6167 определяет jms:
схему URI для службы сообщений Java.
Реализации провайдера
Чтобы использовать JMS, необходимо иметь поставщика JMS, который может управлять сеансами, очередями и темами. Начиная с Java EE версии 1.4, поставщик JMS должен содержаться на всех серверах приложений Java EE. Это может быть реализовано с помощью управления потоком сообщений в архитектуре коннектора Java EE , которая была впервые сделана доступной в этой версии.
Ниже приведен список распространенных поставщиков JMS:
- Amazon SQS «s Java библиотеки сообщений
- Apache ActiveMQ
- Apache Qpid с использованием AMQP [18]
- IBM MQ (ранее MQSeries, затем WebSphere MQ)
- Шина интеграции служб (SIBus) IBM WebSphere Application Server [19]
- JBoss Messaging и HornetQ от JBoss
- JORAM от Консорциума OW2
- Открыть очередь сообщений от Oracle
- OpenJMS от OpenJMS Group
- Oracle WebLogic Server и Oracle AQ
- RabbitMQ от Pivotal Software
Смотрите также
- Бины, управляемые сообщениями
- Очередь сообщений - концепция, лежащая в основе JMS
- Сервис-Ориентированная Архитектура
- SOA, управляемая событиями
- Технологии обмена сообщениями, которые не реализуют JMS API, включают:
- Advanced Message Queuing Protocol (AMQP) - стандартизированный протокол очереди сообщений с несколькими независимыми реализациями
- Служба распространения данных (DDS) - стандартизированная система обмена сообщениями в реальном времени, разработанная группой управления объектами (OMG), с более чем десятью реализациями, которые продемонстрировали взаимодействие между издателями и подписчиками.
- Microsoft Message Queuing - аналогичная технология, реализованная для .NET Framework
Рекомендации
- ^ Карри, Эдвард. 2004. "Связующее ПО, ориентированное на сообщения" . В промежуточном программном обеспечении для коммуникаций, под ред. Кусай Х. Махмуд, 1-28. Чичестер, Англия: Джон Уайли и сыновья. DOI : 10.1002 / 0470862084.ch1 . ISBN 978-0-470-86206-3
- ^ «JSR 914: API службы сообщений Java (JMS)» . Программа процесса сообщества Java . Проверено 31 июля 2018 года .
- ^ Ричардс и др., Страницы 3–5.
- ^ а б «Служба сообщений Java» (PDF) . Sun Microsystems . 5 октября 1998 г. Архивировано 24 февраля 1999 года (PDF) . Проверено 31 июля 2018 года .
- ^ «Документация службы сообщений Java» . Sun Microsystems. 30 октября 1998 года архивации от оригинала на 1999-02-24 . Проверено 31 июля 2018 года .
- ^ «Источник службы сообщений Java - версия 1.0.1a» . Sun Microsystems. 29 октября, 1998. Архивировано из оригинального (ZIP) 16 августа 2000 года . Проверено 31 июля 2018 года .
- ^ «Служба сообщений Java» (PDF) . Sun Microsystems (опубликовано 17 декабря 1999 г.). 9 ноября 1999 г. Архивировано (PDF) из оригинала 23.08.2000 . Проверено 31 июля 2018 года .
- ^ «Документация службы сообщений Java» . Sun Microsystems. 23 декабря 1999 года архивации от оригинала на 2000-02-29 . Проверено 31 июля 2018 года .
- ^ «Служба сообщений Java» (PDF) . Sun Microsystems. 27 августа 2001 . Проверено 31 июля 2018 года .
- ^ «Служба сообщений Java» (PDF) . Sun Microsystems. 12 апреля 2002 . Проверено 31 июля 2018 года .
- ^ «Служба сообщений Java» (PDF) . Oracle . 20 марта 2013 . Проверено 31 июля 2018 года .
- ^ «Финальный выпуск JMS 2.0» . Спецификация службы сообщений Java . 9 июня 2017 года . Проверено 31 июля 2018 года .
- ^ «Служба сообщений Java» (PDF) . Oracle. 10 марта 2015 . Проверено 31 июля 2018 года .
- ^ «Выпуск исправлений JMS 2.0 (Rev a)» . Спецификация службы сообщений Java . 5 июля 2017 года . Проверено 31 июля 2018 года .
- ^ «JSR 343: Служба сообщений Java 2.0» . Программа процесса сообщества Java . Проверено 31 июля 2018 года .
- ^ Монсон-Хефель, Ричард (6 декабря 2018 г.). "JMS 3.0: примите участие!" . Tomitribe . Проверено 17 июля, 2020 .
- ^ Служба сообщений Java (JMS)
- ^ «Apache Qpid ™: обмен сообщениями AMQP с открытым исходным кодом» .
- ^ Уоллис, Грэм. «Выбор системы обмена сообщениями: WebSphere MQ или шина интеграции служб WebSphere Application Server» . IBM developerWorks .
дальнейшее чтение
- Ричардс, Марк; Ричард Монсон-Хефель; Дэвид А. Чаппелл (2009). Служба сообщений Java, второе издание . О'Рейли. ISBN 978-0-596-52204-9.
Внешние ссылки
- Официальный веб-сайт
- JSR 343: Служба сообщений Java 2.0
javax.jms
Документация API Javadoc- Руководство Oracle Java EE 7 JMS
- Матрица исторического сравнения поставщиков JMS