JMS и AMQP-RabbitMQ



Я пытаюсь понять, что такое JMS и как это связано с терминологией AMQP.
Я знаю, что JMS-это API, а AMQP-протокол.



вот мои предположения (а также вопросы)




  • RabbitMQ использует протокол AMQP (скорее реализует протокол AMQP)

  • клиенты Java должны использовать клиентские библиотеки протокола AMQP для подключения / использования RabbitMQ

  • где JMS API вступает в игру здесь? JMS API должен использовать клиентские библиотеки AMQP для подключения чтобы в RabbitMQ?

  • обычно мы используем JMS для подключения брокеров сообщений, таких как RabbitMQ, ActiveMQ и т. д. Тогда какой протокол по умолчанию используется здесь вместо AMQP?


некоторые из вышеперечисленных могут быть стремно. :- ) Но пытается обернуть мою голову вокруг него.

1213   6  

6 ответов:

Ваш вопрос немного запутан и напоминает жесткий вопрос в вопросительной бумаге :) (поскольку учителя всегда пытаются задавать простые вопросы, усложняя :D Я надеюсь, что вы не учитель :) ) давайте посмотрим все это один за другим.

Как вы знаете:

Служба Сообщений Java (JMS) API-это Java Message Oriented Middleware (MOM) API для отправки сообщений между двумя или более клиентами. JMS является частью платформы Java, Enterprise Edition, и определяется спецификация, разработанная в рамках процесса сообщества Java как JSR 914. это стандарт обмена сообщениями, который позволяет компонентам приложений на основе Java Enterprise Edition (Java EE) создавать, отправлять, получать и читать сообщения. Это позволяет осуществлять связь между различными компонентами распределенного приложения, чтобы быть слабосвязанным, надежным и асинхронным.

теперь (от Википедия):

расширенный протокол очереди сообщений (AMQP) - это открытый стандартный протокол прикладного уровня для промежуточного программного обеспечения, ориентированного на сообщения. Этот определяющими особенностями AMQP являются ориентация сообщений, очереди, маршрутизация (в том числе точка-точка и публикация и подписка), надежность и безопасность.

и самое главное (опять из Википедии):

В отличие от JMS, который просто определяет API, AMQP является проводным уровнем протокол. Один протокол проводного уровня представляет собой описание формата данные, которые передаются по сети в виде потока октетов. Поэтому любой инструмент, который может создавать и интерпретировать сообщения, соответствуйте этому формату данных смогите взаимодействовать с любым другим уступчивым инструмент независимо от языка реализации

некоторые важные вещи вы должны знать:

  1. имейте в виду, что AMQP-это технология обмена сообщениями, которая не реализует JMS ПРИКЛАДНОЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС.
  2. JMS-это API, а AMQP-a protocol.So не имеет смысла говорить, что это протокол по умолчанию JMS, конечно клиент приложения используют HTTP/S в качестве протокола соединения при вызове Сервера WebLogic Web-Сервиса.
  3. JMS-это только спецификация API. Он не использует никакого протокола. Поставщик JMS (например, ActiveMQ) может использовать любой базовый протокол для реализовать с JMS API-интерфейс. Например: Apache ActiveMQ может использовать любой из следующие протоколы: AMQP, MQTT, OpenWire, REST (HTTP), RSS и Atom, Stomp, WSIF, WS Notification, XMPP. Я предлагаю вам прочитать используя ОМС транспорт в качестве протокола связи.

Удачи :)

давайте начнем с основы.

RabbitMQэто мама (Message Oriented Middleware), разработанный с помощью Erlang (TLC-ориентированного языка программирования) и реализация проводного протокола AMQP (Протокол Предварительной Очереди Сообщений). В настоящее время многие клиентские API (например, Java, C++, RESTful и т. д.) доступны для включения использования служб обмена сообщениями RabbitMQ.

JMS (Java Messaging Service) является стандартом JCP определение набор структурированных API для реализации мамой. Примером MOM, который реализует (т. е. совместим с) API JMS, является ActiveMQ; есть также HornetMQ и другие. Такие промежуточные программы получают API JMS и реализуют шаблоны обмена соответственно.

согласно вышесказанному, взятый скелет API JMS, экземпляр RabbitMQ и его клиентские API Java, можно разработать реализацию JMS с использованием RabbitMQ: единственное, что один должен сделать, в этот момент, реализует шаблон обмена (через RabbitMQ) в соответствии со спецификацией JMS.

ключ: набор API, таких как JMS, может быть реализован независимо от технологии (в данном случае, RabbitMQ).

JMS, когда он был определен, не определял протокол между клиентом JMS и сервером обмена сообщениями. Клиент JMS, который реализует API JMS, может использовать любой протокол для связи с сервером обмена сообщениями. Клиент просто должен быть совместим с JMS api. Это все. Обычно клиенты JMS используют пользовательский протокол, который понимает их сервер обмена сообщениями.

AMQP с другой стороны-это протокол между клиентом обмена сообщениями и сервером обмена сообщениями. Клиент JMS может использовать AMQP в качестве протокол для связи с сервером обмена сообщениями. И есть такие клиенты, которые доступны.

http://www.lshift.net/blog/2009/03/16/openamqs-jms-client-with-rabbitmq-server

  • где JMS API вступает в игру здесь? JMS API должен использовать клиентские библиотеки AMQP для подключения к RabbitMQ?

JMS-это API, поэтому некоторые API JMS реализованы по протоколу AMQP (например,Apache QPID JMS) в то время как большинство API JMS используют другие протоколы. Если версия протокола AMQP одинакова, такой клиент должен иметь возможность взаимодействовать с другим клиентом AMQP.

  • обычно мы используем JMS для подключения брокеров сообщений, таких как RabbitMQ, ActiveMQ и др. Тогда какой протокол по умолчанию используется здесь вместо AMQP?

это зависит от вашей конфигурации этого API JMS. Для ActiveMQ это может быть AMQP но по умолчанию это 'openwire'

https://spring.io/understanding/AMQP

AMQP (Advanced Message Queueing Protocol) - это открыто опубликованный провод спецификация для асинхронного обмена сообщениями. Каждый переданный байт данные уточняются. Эта характеристика позволяет писать библиотеки на многих языках, а также для работы на нескольких операционных системах и процессорах архитектуры, что делает их по-настоящему совместимыми, кросс-платформенными стандарт обмена сообщениями.

AMQP is часто сравнивается с JMS (Java Message Service), наиболее распространенным система обмена сообщениями в Java-сообществе. Недостатком ОМС является то, что API-интерфейсы указаны, но формат сообщения-нет. В отличие от AMQP, JMS не имеет никаких требований к тому, как формируются и передаются сообщения. По сути, каждый брокер JMS может реализовать сообщения в a различный формат. Они просто должны использовать один и тот же API.

Я подозреваю, что вы ищете документация который говорит, в частности:

клиент JMS для Vfabric RabbitMQ-это клиентская библиотека для vFabric В RabbitMQ. vFabric RabbitMQ не является поставщиком JMS, но имеет функции необходимо для поддержки моделей обмена сообщениями очереди и темы JMS. JMS-клиент для RabbitMQ реализует спецификацию JMS 1.1 поверх RabbitMQ Java client API, что позволяет создавать новые и существующие JMS приложения для подключения RabbitMQ брокеры через расширенное сообщение Протокол массового обслуживания (AMQP).

Comments

    Ничего не найдено.