Я пытаюсь понять, что такое JMS и как это связано с терминологией AMQP. Я знаю, что JMS - это API, а AMQP - это протокол.
Вот мои предположения (и вопросы тоже)
- RabbitMQ использует протокол AMQP (скорее реализует протокол AMQP)
- Клиенты Java должны использовать клиентские библиотеки протокола AMQP для подключения / использования RabbitMQ
- Где здесь задействован JMS API? JMS API должен использовать клиентские библиотеки AMQP для подключения к RabbitMQ?
- Обычно мы используем JMS для подключения брокеров сообщений, таких как RabbitMQ, ActiveMQ и т. Д. Тогда какой протокол по умолчанию используется здесь вместо AMQP?
Некоторые из вышеперечисленных могут быть глупыми. :-) Но пытаюсь осознать это.
Ответы:
Ваш вопрос немного запутан и напоминает сложный вопрос в вопроснике :) (Поскольку учителя всегда пытаются задавать простые вопросы, делая сложные: D Я надеюсь, что вы не учитель :)) Давайте рассмотрим все это один за другим.
Как вы знаете:
API службы сообщений Java (JMS) - это API промежуточного программного обеспечения Java (MOM) для отправки сообщений между двумя или более клиентами . JMS является частью платформы Java, Enterprise Edition, и определяется спецификацией, разработанной в рамках процесса сообщества Java как JSR 914. Это стандарт обмена сообщениями, который позволяет компонентам приложений на основе Java Enterprise Edition (Java EE) создавать, отправлять, получать и читать сообщения. Это позволяет обмену данными между различными компонентами распределенного приложения быть слабосвязанными, надежными и асинхронными .
Сейчас (из Википедии ):
И самое главное (опять же из Википедии):
Вам следует знать несколько важных вещей:
Удачи :)
источник
I am not sure but I believe that AMQP also uses HTTP/S protocol but AMQP is enhacement is messaging protocol over HTTP
: Нет. Это не правильно.JMS uses simple HTTP but for RabbitMQ/ActiveMq, they uses enhanced protocol.
: Нет. Это не правильно. JMS - это всего лишь спецификация API. Он не использует никаких протоколов. Поставщик JMS (например, ActiveMQ) может использовать любой базовый протокол для реализации JMS API. Например: Apache ActiveMQ может использовать любой из следующих протоколов: AMQP, MQTT, OpenWire, REST (HTTP), RSS и Atom, Stomp, WSIF, WS Notification, XMPP.Начнем с основы.
RabbitMQ - это MOM (ориентированное на сообщения промежуточное ПО), разработанное с помощью Erlang (язык программирования, ориентированное на TLC) и реализующее проводной протокол AMQP ( протокол расширенной очереди сообщений). В настоящее время доступно множество клиентских API (например, Java, C ++, RESTful и т. Д.), Позволяющих использовать службы обмена сообщениями RabbitMQ.
JMS (Java Messaging Service) - это стандарт JCP, определяющий набор структурированных API-интерфейсов, которые должны быть реализованы MOM. Примером MOM, который реализует (т. Е. Совместимо с) API JMS, является ActiveMQ; есть еще HornetMQ и другие. Такие промежуточные программы получают API-интерфейсы JMS и соответствующим образом реализуют шаблоны обмена.
В соответствии с вышеизложенным, взятым из каркаса JMS API, экземпляра RabbitMQ и его клиентских API Java, можно разработать реализацию JMS с использованием RabbitMQ: единственное, что нужно сделать на этом этапе, - это реализовать шаблон обмена (через RabbitMQ) согласно спецификации JMS.
Ключ: набор API, таких как JMS, может быть реализован независимо от технологии (в данном случае RabbitMQ).
источник
JMS, когда он был определен, не определял протокол между клиентом JMS и сервером обмена сообщениями. Клиент JMS, реализующий JMS API, может использовать любой протокол для связи с сервером обмена сообщениями. Клиент просто должен быть совместим с 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 (например, Apache QPID JMS ), тогда как большинство JMS API используют другие протоколы. Если версия протокола AMQP такая же, такой клиент должен иметь возможность взаимодействовать с другим клиентом AMQP.
Это зависит от вашей конфигурации этого JMS API. Для ActiveMQ это может быть AMQP, но по умолчанию это openwire.
источник
Я хочу предложить статью, она очень помогла мне лучше понять, в чем разница между AMQP и JMS.
Вот ссылка на статью: http://www.wmrichards.com/amqp.pdf
источник
https://spring.io/understanding/AMQP
источник
Я подозреваю, что вы, возможно, ищете эту документацию, в которой, в частности, говорится:
источник