Houve uma quantidade considerável de pesquisas recentes ao considerar como as chamadas HTTP REST poderiam substituir o conceito de fila de mensagens.
Se você introduzir o conceito de um processo e uma tarefa como um recurso, a necessidade de camada de mensagens do meio começará a evaporar.
Ex:
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
Uma tarefa pode ter várias etapas para inicialização e um processo pode retornar o status quando pesquisado ou POST para um URL de retorno de chamada quando concluído.
Isso é simples e torna-se bastante poderoso quando você percebe que agora pode assinar um feed rss / atom de todos os processos e tarefas em execução sem nenhuma camada intermediária. Qualquer sistema de enfileiramento exigirá algum tipo de front-end da Web, e esse conceito foi incorporado sem outra camada de código personalizado.
Seus recursos existem até você excluí-los, o que significa que você pode visualizar informações históricas muito tempo após a conclusão do processo e da tarefa.
Você integrou a descoberta de serviços, mesmo para uma tarefa que possui várias etapas, sem protocolos extras complicados.
GET /task/name
- returns form with required fields
POST (URL provided form's "action" attribute)
Sua descoberta de serviço é um formulário HTML - um formato legível universal e humano.
Todo o fluxo pode ser usado programaticamente ou por um ser humano, usando ferramentas universalmente aceitas. É um cliente orientado e, portanto, RESTful. Toda ferramenta criada para a web pode conduzir seus processos de negócios. Você ainda possui canais de mensagens alternativos, POSTando assincronamente para uma matriz separada de servidores de log.
Depois de considerar por um tempo, relaxe e comece a perceber que o REST pode apenas eliminar a necessidade de uma fila de mensagens e um ESB completamente.
http://www.infoq.com/presentations/BPM-with-REST