Когда использовать JMS и когда использовать REST? [закрытый]

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

спасибо

2 ответов


всегда используйте REST. Это самый современный, продвинутый и масштабируемый интеграционный подход, доступный сегодня. Балансировка нагрузки служба на основе REST достигается просто с помощью аппаратного или программного http-балансировщика нагрузки и может считаться такой же свободной, как балансировка нагрузки в JMS.

мама (Сообщение Промежуточного) не масштабируется легко (но может масштабироваться достаточно большой для ваших нужд). REST работает в веб-масштабе.

мама не имеет эффект масштаба. Для запросов на получение данных каждый раз, когда запрашивается определенный фрагмент данных, сервер должен отправлять другое сообщение и отвечать на него. В системе на основе REST запросы на те же данные могут обслуживаться с помощью http Кеша. Это означает, что по мере увеличения объема запросов со временем система на основе MOM будет видеть увеличение нагрузки на сервер с той же скоростью, что и запросы. Система на основе REST будет видеть увеличение нагрузки на сервер с более медленной скоростью, чем запросы.

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

мама ужасна для синхронного запроса-ответа, поскольку он будет медленно терпеть неудачу (т. е. ждать тайм-аута), когда сервер не работает. Когда запрос завершается неудачей, вы хотите, чтобы он завершился быстро. HTTP-запрос к службе на основе REST немедленно завершится ошибкой (при подключении TCP), если сервер не работает.

мама полезно для асинхронного обмена сообщениями запрос-ответ, но тогда вы останетесь с проблемой, где хранить состояние между запросом и ответом (подсказка: ваши параметры файл или обычная база данных, the или База Данных NoSQL). Часто лишние усилий не стоит воспринимаемые преимущества asynchronicity. Также службы на основе REST поддерживают асинхронные запросы, если они вам действительно нужны. 202 принято is твой друг в этой ситуации.

наконец, использование кэширования позволяет системам на основе REST реализовывать интеграции на основе pull, которые намного проще поддерживать. Например, просто скажите, что мы хотим переместить данные из системы A в систему B. подход MOM будет заключаться в отправке сообщений из A В B. подход на основе REST будет заключаться в создании службы ленты данных в A (например, RSS-канал), которая B опрашивает новые данные (так же, как ваш RSS-ридер опрашивает новые статьи). Когда B терпит неудачу, в маме например, группе поддержки необходимо будет отслеживать очереди сообщений, чтобы убедиться, что они не переполняются, в то время как кто-то другой получает резервную копию B. В остальном примере команде поддержки просто нужно беспокоиться о том, чтобы получить B обратно. Нет большой разницы, когда A терпит неудачу. В Примере с мамой B не знает и не заботится. В остальном примере B знает, что A не работает, но ему все равно, потому что, очевидно, нет новых данных от A, когда он не работает. Первоначально опрос, основанный на вытягивании интеграция требует очень неэффективных швов, однако кэширование HTTP делает это не проблемой.

другими словами, вместо того, чтобы инвестировать в сервер JMS, инвестируйте в хороший кэширующий балансировщик нагрузки HTTP.


вы не можете сравнить эти две технологии.

остальное сервис/шаблон, чтобы дать вам организованный способ получить доступ к ресурсам без гражданства.

MOM Sysems / JMS является шаблоном, предназначенным для обмена сообщениями между системами. Его о данных в, данные в надежной форме.


вы не можете сравнить JMS с REST bc, они решают разные проблемы.


но если ваш вопрос больше вдоль линий мне нужен интерфейс REST для моих очередей JMS? Вся его ситуация, я видел, как люди используют REST для защиты тонких клиентов от логики, необходимой для очереди сообщений в JMS. Например. если у вас есть клиент android, который хочет поговорить с JMS, его намного сложнее сделать это наивно по сравнению с нажатием сообщений на интерфейс "rest", который затем может переводить и нажимать на JMS.