REST HTTP呼び出しがメッセージキューの概念をどのように置き換えることができるかを検討する上で、最近かなりの量の調査が行われました。
プロセスとタスクの概念をリソースとして導入すると、中間メッセージングレイヤーの必要性がなくなり始めます。
例:
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
タスクには初期化のための複数のステップがあり、プロセスはポーリング時にステータスを返すか、完了時にコールバックURLにPOSTすることができます。
これは非常に単純で、中間層なしで実行中のすべてのプロセスとタスクのrss / atomフィードをサブスクライブできることがわかったときに、非常に強力になります。とにかく、キューシステムには何らかのWebフロントエンドが必要であり、この概念には、カスタムコードの別のレイヤーなしで組み込まれています。
リソースは、削除するまで存続します。つまり、プロセスとタスクが完了した後も、履歴情報を表示できます。
複雑なプロトコルを追加することなく、複数のステップがあるタスクであっても、サービスディスカバリを組み込みました。
GET /task/name
- returns form with required fields
POST (URL provided form's "action" attribute)
サービスディスカバリはHTMLフォームであり、人間が読める形式で普遍的な形式です。
フロー全体は、一般的に受け入れられているツールを使用して、プログラムまたは人間が使用できます。これはクライアント駆動であるため、RESTfulです。Web用に作成されたすべてのツールは、ビジネスプロセスを推進できます。別のログサーバーの配列に非同期でPOSTを実行することで、代替メッセージチャネルがまだあります。
しばらく考えた後、RESTはメッセージングキューとESBの必要性を完全に排除できることを理解し始めます。
http://www.infoq.com/presentations/BPM-with-REST