5.12. AMQP リアクティブサンプルの仕組み
この例の機能があるメッセージング統合パターンは、2 つのキューとブローカーを持つ Publisher-Subscriber パターンです。
- Request キューは、テキスト文字列プロセッサーによって処理される Web インターフェイスを使用して入力する文字列を含む HTTP リクエストを保存します。
- Result キューは、Uppercase に変換され、表示される準備が整う文字列が含まれる応答を保存します。
アプリケーションで設定されるコンポーネントは、以下のとおりです。
- テキスト文字列をアプリケーションに送信するのに使用できるフロントエンドサービス。
- 文字列を大文字に変換するバックエンドサービス。
- Spring Boot HTTP Starter によって設定され、提供される HTTP コントローラー。
- 2 つのメッセージングキュー間でメッセージをルーティングする組み込み Artemis AMQP Broker インスタンス。
要求キューは、テキスト文字列を含むメッセージをフロントエンドからテキスト文字列プロセッサーサービスに渡します。処理用の文字列を送信する場合は、以下を行います。
-
フロントエンドサービスは、リクエストのペイロードとして文字列を含む HTTP
POSTリクエストを HTTP コントローラーに送信します。 - リクエストは、AMQP ブローカーへメッセージをルーティングするメッセージングマネージャーによって選択されます。
- ブローカーはメッセージをテキスト文字列プロセッサーサービスにルーティングします。テキストプロセッサーサービスがリクエストを取得できない場合には、このようなインスタンスが利用可能な場合、ブローカーはメッセージを次の利用可能なプロセッサーインスタンスにルーティングします。または、ブローカーは、再度利用可能になったときに、同じインスタンスにリクエストを再送信するまで待機します。
- テキスト文字列プロセッサーサービスはメッセージを取得して、文字列の文字を大文字に変換します。プロセッサーサービスは処理済みのリクエストを大文字で AMQP ブローカーに送信します。
- AMQP ブローカーは、処理された結果とともにリクエストをメッセージングマネージャーにルーティングします。
- メッセージングマネージャーは、処理済みのリクエストを、フロントエンドサービスがアクセスできる送信キューに格納します。
応答キューは、文字列プロセッサーサービスによって処理される結果が含まれる HTTP 応答を保存します。フロントエンドアプリケーションは、このキューを一定間隔でポーリングして結果を取得します。処理された結果が表示される準備が整ったら、以下を行います。
-
フロントエンドサービスは、HTTP
GETリクエストを Spring Boot HTTP Starter によって提供される HTTP コントローラーに送信します。 - HTTP コントローラーはリクエストをメッセージングマネージャーにルーティングします。
-
フロントエンドによって以前に送信されたリクエストが処理の準備ができ、送信キューで利用可能な場合、メッセージングマネージャーは結果を HTTP
GETリクエストとして HTTP コントローラーに送信します。 - HTTP コントローラーは、応答をフロントエンドサービスにルーティングし、結果を表示します。