Джакарта Сообщения
Jakarta Messaging API (ранее Java Message Service или JMS API) — это Java интерфейс прикладного программирования (API) для промежуточного программного обеспечения, ориентированного на сообщения . Он предоставляет общие модели обмена сообщениями, способные решить проблему производитель-потребитель , которые можно использовать для облегчения отправки и получения сообщений между программными системами . [1] Jakarta Messaging является частью Jakarta EE и первоначально был определен в спецификации, разработанной в Sun Microsystems, а затем был принят в рамках процесса сообщества Java . [2]
Общая идея обмена сообщениями
[ редактировать ]Обмен сообщениями — это форма слабосвязанной распределенной связи, где в этом контексте термин «коммуникация» можно понимать как обмен сообщениями между компонентами программного обеспечения. Технологии, ориентированные на сообщения, пытаются ослабить тесно связанные коммуникации (например, TCP сетевые сокеты , CORBA или RMI ) путем введения промежуточного компонента. Этот подход позволяет компонентам программного обеспечения взаимодействовать друг с другом косвенно. Преимущества этого заключаются в том, что отправителям сообщений не нужно точно знать своих получателей.
Преимущества обмена сообщениями включают возможность интегрировать разнородные платформы, уменьшать узкие места системы, повышать масштабируемость и быстрее реагировать на изменения. [3]
История версий
[ редактировать ]- СМС 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 (JNDI) для нужного поставщика. Классы сначала используют фабрику соединений для подключения к очереди или теме, а затем используют заполнение и отправку или публикацию сообщений. На принимающей стороне клиенты затем получают сообщения или подписываются на них.
Схема URI
[ редактировать ]RFC 6167 определяет jms:
Схема URI для службы сообщений Java.
Реализации провайдера
[ редактировать ]Чтобы использовать JMS, необходимо иметь поставщика JMS, который может управлять сеансами, очередями и темами. Начиная с версии Java EE 1.4, поставщик JMS должен присутствовать на всех серверах приложений Java EE. Это можно реализовать с помощью управления потоком сообщений архитектуры Java EE Connector , которая впервые стала доступна в этой версии.
Ниже приведен список распространенных поставщиков JMS:
- Amazon SQS Библиотека сообщений Java
- Апач ActiveMQ
- Apache Qpid с использованием AMQP [18]
- IBM MQ (ранее MQSeries, затем WebSphere MQ)
- IBM WebSphere Application Server (SIBus) Шина интеграции служб [19]
- JBoss Messaging и HornetQ от JBoss
- JORAM из Консорциума OW2
- Открыть очередь сообщений от Oracle
- OpenJMS от группы OpenJMS
- Oracle WebLogic Server и Oracle AQ
- PubSub+ от Solace
- RabbitMQ от Pivotal Software
- Облачный обмен сообщениями TIBCO [20] из программного обеспечения TIBCO
- Служба корпоративных сообщений TIBCO [21] из программного обеспечения TIBCO
См. также
[ редактировать ]- Компоненты, управляемые сообщениями
- Очередь сообщений — концепция, лежащая в основе JMS.
- Сервис-ориентированная архитектура
- К технологиям обмена сообщениями, не реализующим JMS API, относятся:
- Advanced Message Queuing Protocol (AMQP) — стандартизированный протокол очереди сообщений с несколькими независимыми реализациями.
- Служба распространения данных (DDS) — стандартизированная система обмена сообщениями в реальном времени Object Management Group (OMG) с более чем десятью реализациями, которые продемонстрировали совместимость между издателями и подписчиками.
- Microsoft Message Queuing — аналогичная технология, реализованная для .NET Framework.
Ссылки
[ редактировать ]- ^ Карри, Эдвард. 2004. «Промежуточное ПО, ориентированное на сообщения» . В книге «Промежуточное программное обеспечение для коммуникаций» под ред. Кусай Х. Махмуд, 1–28. Чичестер, Англия: Джон Уайли и сыновья. два : 10.1002/0470862084.ch1 . ISBN 978-0-470-86206-3
- ^ «JSR 914: API службы сообщений Java (JMS)» . Программа Java Community Process . Проверено 31 июля 2018 г.
- ^ Ричардс и др., страницы 3–5.
- ^ Перейти обратно: а б «Служба сообщений Java» (PDF) . Сан Микросистемс . 5 октября 1998 г. Архивировано (PDF) из оригинала 24 февраля 1999 г. Проверено 31 июля 2018 г.
- ^ «Документация службы сообщений Java» . Сан Микросистемс. 30 октября 1998 г. Архивировано из оригинала 24 февраля 1999 г. Проверено 31 июля 2018 г.
- ^ «Источник службы сообщений Java — версия 1.0.1a» . Сан Микросистемс. 29 октября 1998 года. Архивировано из оригинала (ZIP) 16 августа 2000 года . Проверено 31 июля 2018 г.
- ^ «Служба сообщений Java» (PDF) . Sun Microsystems (опубликовано 17 декабря 1999 г.). 9 ноября 1999 г. Архивировано (PDF) из оригинала 23 августа 2000 г. Проверено 31 июля 2018 г.
- ^ «Документация службы сообщений Java» . Сан Микросистемс. 23 декабря 1999 г. Архивировано из оригинала 29 февраля 2000 г. Проверено 31 июля 2018 г.
- ^ «Служба сообщений Java» (PDF) . Сан Микросистемс. 27 августа 2001 г. Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 31 июля 2018 г.
- ^ «Служба сообщений Java» (PDF) . Сан Микросистемс. 12 апреля 2002 г. Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 31 июля 2018 г.
- ^ «Служба сообщений Java» (PDF) . Оракул . 20 марта 2013 г. Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 31 июля 2018 г.
- ^ «Финальная версия JMS 2.0» . Спецификация службы сообщений Java . 9 июня 2017 г. Проверено 31 июля 2018 г.
- ^ «Служба сообщений Java» (PDF) . Оракул. 10 марта 2015 г. Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 31 июля 2018 г.
- ^ «Выпуск с ошибками JMS 2.0 (версия a)» . Спецификация службы сообщений Java . 5 июля 2017 г. Проверено 31 июля 2018 г.
- ^ «JSR 343: Служба сообщений Java 2.0» . Программа Java Community Process . Проверено 31 июля 2018 г.
- ^ Монсон-Хефель, Ричард (6 декабря 2018 г.). «JMS 3.0: Принимайте участие!» . Томитрибе . Проверено 17 июля 2020 г.
- ^ Служба сообщений Java (JMS)
- ^ «Apache Qpid™: обмен сообщениями AMQP с открытым исходным кодом» .
- ^ Уоллис, Грэм. «Выбор системы обмена сообщениями: WebSphere MQ против шины интеграции служб WebSphere Application Server» . IBM DeveloperWorks .
- ^ «Программное обеспечение TIBCO для обмена сообщениями TIBCO Cloud™» .
- ^ «Служба корпоративных сообщений TIBCO™» .
Дальнейшее чтение
[ редактировать ]- Ричардс, Марк; Ричард Монсон-Хефель; Дэвид А. Чаппелл (2009). Служба сообщений Java, второе издание . О'Рейли. ISBN 978-0-596-52204-9 .