Всегда используйте ОТДЫХ. Это самый современный, продвинутый и масштабируемый интеграционный подход, доступный сегодня. Балансировка нагрузки службы на основе REST достигается просто с помощью аппаратного или программного HTTP-балансировщика нагрузки и может считаться столь же свободным, как и балансировка нагрузки в JMS.
MOM (Message Oriented Middleware) не масштабируется легко (но может масштабироваться достаточно большим для ваших нужд). REST работает в масштабе сети.
MOM не имеет economies of scale. Для запросов на получение данных каждый раз, когда запрашивается конкретная часть данных, другое сообщение должно быть отправлено на сервер и на него отвечает сервер. В системе на основе REST запросы на одни и те же данные могут обслуживаться HTTP cache. Это означает, что по мере увеличения объема запросов с течением времени система на основе MOM увидит увеличение загрузки сервера с той же скоростью, что и запросы. Система на основе REST увидит увеличение загрузки сервера с меньшей скоростью, чем запросы.
MOM соблазнит вас сообщениями о пожаре и забывании с гарантированной доставкой, только чтобы укусить вас chain of custody problem.
MOM ужасен для синхронного запроса-ответа, так как он будет терпеть неудачу (т. Е. Ждать таймаута), когда сервер не работает. Когда запрос будет терпеть неудачу, вы хотите, чтобы он быстро провалился. HTTP-запрос к службе на основе REST будет немедленно сбой (при подключении TCP), если сервер не работает.
MOM используется для асинхронного запроса ответа сообщениями, но тогда вы будете оставаться с проблемой, где хранить состояние в период между запросом и ответом (Подсказка: Ваши варианты File or Regular Database, то Message или NoSQL Database). Часто дополнительные усилия по осуществлению не стоят ощутимых преимуществ асинхронности. Также службы на основе REST поддерживают асинхронные запросы, если вам это действительно нужно. 202 Accepted - твой друг в этой ситуации.
И, наконец, использование кеширования позволяет системам на основе REST реализовывать интеграцию на основе pull-based, которые намного легче поддерживать. Например, просто скажите, что мы хотим переместить данные из системы A в систему B. Подход MOM должен был отправлять сообщения от A до B. Подход, основанный на REST, заключался бы в создании службы передачи данных в A (например, в RSS-канале) что B опроса для новых данных (так же, как ваш RSS-ридер публикует опросы для новых статей). Когда B терпит неудачу, в примере MOM команде поддержки необходимо будет следить за очередями сообщений, чтобы убедиться, что они не переполняются, а кто-то другой получает B обратно. В примере REST команда поддержки просто должна беспокоиться о том, чтобы вернуть B. Когда A терпит неудачу, нет большой разницы. В примере MOM B не знает и не заботится. В примере REST B знает, что A не работает, но все равно все равно, потому что, очевидно, нет новых данных от A, когда он выключен. Первоначально опрос, основанный на использовании pull-based-интеграции, требует, чтобы швы были очень неэффективными, однако HTTP-кеширование делает это проблемой.
Другими словами, вместо того, чтобы инвестировать в JMS-сервер, инвестируйте в хороший кеширующий загрузчик нагрузки HTTP.
Это две разные технологии и шаблоны ... и в результате ваш вопрос не имеет смысла. – Nix
@ Никс не такой педант. С точки зрения интеграции приложений, вполне справедливо рассматривать подход на основе REST или подход, основанный на MOM. Во всяком случае, я удивлен, что SOAP-сервисы тоже не рассматривались. –
@Nix Я могу достичь той же интеграции, используя либо технологии, поэтому вопрос является префектом. на самом деле большой вопрос. –