Какой из них выбрать из STOMP/AMQP?

Я использую тему node.js как клиента для jms. Для подключения к теме есть два протокола. Тезисы - Stomp и AMQP. Я прочитал о них краткую информацию в http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol и http://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol. Оба они, как представляется, являются протоколом уровня канала i.e  данные, которые отправляются по сети как поток октетов. Я не нахожу никаких конкретную причину, которая должна быть предпочтительной. Если кто-то может пролить свет на него, это было бы полезно.

Еще один момент заключается в том, что оба протокола гордятся тем, что они являются взаимоисключающими. Совместимый термин означает, что если кто-то  хотите снять конкретную реализацию брокера сообщений, скажем, apache active MQ и вместо этого захотите подключить Websphere MQ, переход  будет плавным (при условии поддержки AMQP/STOMP или любого другого протокола levl-протокола)?

Ответ 1

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

Как это часто бывает, есть и другие факторы, которые следует учитывать, особенно если ваш размер сообщения /count/etc. не означает, что есть четкий победитель с точки зрения производительности, и ни один протокол не отвечает вашим функциональным требованиям так, как это делает другой.

В этой статье, в частности, намекает, что в разных реализациях брокера STOMP может быть больше фрагментации. Цитата из этой статьи

STOMP... использует семантику SEND с строкой "destination". Брокер должен отображать то, что он понимает внутри себя, например, тему, очередь или обмен. Потребители затем ПОДПИСАТЬСЯ в эти пункты назначения. Поскольку эти назначения не указаны в спецификации, различные брокеристы могут поддерживать различные вкусы назначения. Таким образом, его не всегда просто перекодировать код между брокерами.

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