2013-06-06 3 views
4

Я слышал, как парень из IBM рассказал о MQTT, и он сказал, что MQTT - самый легкий протокол обмена сообщениями на сегодняшний день. Его аргумент заключался в том, что наименьшие накладные расходы, производимые для одного сообщения, составляют 2 байта. Тем не менее, я слышал о том же (2 байта накладных расходов) о HTML5 WebSockets тоже? В любом случае, поскольку я планирую использовать Open MQ в качестве поставщика JMS для приложения для обмена сообщениями, какой протокол меня использовал поставщик. Я не могу найти ответ на этот вопрос, и я даже просмотрел документацию Open MQ и документацию GlassFish, которые используют Open MQ в качестве JMS-провайдера. Некоторые сообщения в блогах и т. Д. В Интернете говорят AMQP, но я не могу найти твердую ссылку на этот отчет.Какой транспортный протокол использует Open MQ?

Какой протокол использует Open MQ, и как вы узнаете?

ответ

6

Я думаю, что вы смешиваете несколько вещей: MQTT является протоколом уровня приложения и использует TCP в качестве транспортного протокола. MQTT также может использоваться с Websockets в качестве транспорта. MQTT есть, если хотите, легкая альтернатива JMS и AMQP.

AMQP является популярной и надежной альтернативой JMS и хорошо подходит для бизнеса и критически важных сообщений. Он очень богат и широко используется. Обратите внимание, что AMQP является протоколом обмена сообщениями, а JMS - это API (который может использовать только AMQP в качестве транспорта). Вы можете использовать AMQP непосредственно в приложениях Java с такими библиотеками, как RabbitMQ Java Client.

MQTT с другой стороны, идеально подходит для телеметрических данных и сценариев, где у вас есть много клиентов, которые взаимодействуют с одним брокером сообщений и где использование низкой пропускной способности, эффективность памяти и время автономной работы на клиентах является ключевым фактором.

JMS не определяет какой-либо транспортный протокол (в отличие от MQTT), и все может быть использовано здесь. Я лично считаю, что TCP здесь тоже подходит.

Я не знаю о OpenMQ, но для JMS и AMQP могу рекомендовать ActiveMQ. Для MQTT есть несколько брокеров, в том числе HiveMQ и Mosquitto.

Обязательная Отказ от ответственности: Я разработчик HiveMQ, так что я, вероятно, немного предвзятым ;-)

+1

Доминик, благодарю вас за отличный ответ. Но разве Open MQ не может запускать JMS поверх AMQP? Вы говорите об AMQP как о «альтернативе» JMS, но JMS - это просто API. –

+0

Мартин, я разъяснил некоторые части ответа относительно «альтернативной» части. Похоже, что OpenMQ использует TCP в качестве транспортного протокола по умолчанию.Документация не очень хороша в этом imho. Поскольку это был ваш первоначальный вопрос, извините, я не могу дать окончательный ответ на это. Надеюсь, кто-то еще может помочь :) –

+0

Доминик, я хотел бы принять ваш ответ. Позвольте мне просто сказать вам, что вы мне очень помогли. Тем не менее, я искал ответы с авторитетным источником, чтобы идти вперед, поэтому я не могу проверить ваш ответ как ответ на мой вопрос. Вы, похоже, хорошо разбираетесь в обмене Java-сообщениями, и я чувствую, что существует нехватка сообщений в блогах и учебных пособий о том, как работает Java-обмен сообщениями. Возможно, вы можете опубликовать такую ​​статью в Интернете? –

0

Я думаю OpenMQ использует STOMP как Application Level Protocl. Нет другой документации, которую поддерживает протокол OpenMQ, чем STOMP.

Редактировать: найден протокол UMS, и, похоже, OpenMQ использует это по умолчанию. https://mq.java.net/4.3-content/ums/umsIntro.html

OpenMQ не может использовать AMQP, поэтому я бы порекомендовал RabbitMQ.

Смежные вопросы