В последнее время было проведено немало исследований, посвященных тому, как HTTP-вызовы REST могут заменить концепцию очереди сообщений.
Если вы представите концепцию процесса и задачи как ресурса, потребность в среднем уровне обмена сообщениями начнет исчезать.
Пример:
POST /task/name
- Returns a 202 accepted status immediately
- Returns a resource url for the created task: /task/name/X
- Returns a resource url for the started process: /process/Y
GET /process/Y
- Returns status of ongoing process
Задача может иметь несколько шагов для инициализации, и процесс может вернуть статус при опросе или POST на URL-адрес обратного вызова после завершения.
Это очень просто и становится достаточно мощным, когда вы понимаете, что теперь вы можете подписаться на канал rss / atom всех запущенных процессов и задач без какого-либо промежуточного уровня. Любая система массового обслуживания в любом случае потребует какого-то веб-интерфейса, и в эту концепцию она встроена без другого слоя пользовательского кода.
Ваши ресурсы существуют до тех пор, пока вы их не удалите, что означает, что вы можете просматривать историческую информацию еще долго после завершения процесса и задачи.
Вы встроили обнаружение службы даже для задачи, которая состоит из нескольких этапов, без каких-либо дополнительных сложных протоколов.
GET /task/name
- returns form with required fields
POST (URL provided form's "action" attribute)
Обнаружение вашего сервиса - это форма HTML - универсальный и удобный для чтения формат.
Весь поток может использоваться программно или человеком, используя общепринятые инструменты. Это клиент, и поэтому RESTful. Каждый инструмент, созданный для Интернета, может управлять вашими бизнес-процессами. У вас по-прежнему есть альтернативные каналы сообщений путем асинхронной отправки сообщений на отдельный массив серверов журналов.
Подумав некоторое время, вы бездельничаете и начинаете понимать, что REST может просто полностью исключить необходимость в очереди сообщений и ESB.
http://www.infoq.com/presentations/BPM-with-REST