5.13. リアクティブアプリケーションでの AMQP の使用
Spring Boot HTTP コントローラーで AMQP Client Starter を使用して、簡易メッセージングリアクティブアプリケーションを開発します。このサンプルアプリケーションは、2 つのメッセージングキューとブローカーを使用する Publisher-Subscriber メッセージング統合パターンで 2 つのサービスを統合します。
この例は、AMQP メッセージングを使用して統合された 2 つのサービスで設定される Reactor Netty 上の Spring Boot および Eclipse Vert.x で基本的なアプリケーションを作成する方法を示しています。アプリケーションは以下のコンポーネントで設定されます。
- テキスト文字列をアプリケーションに送信するために使用できるフロントエンドサービス
- 文字列を大文字に変換するバックエンドサービス
- サービス間でマッサージをルーティングし、要求キューと応答キューを管理する Artemis AMQP ブローカー。
- Spring Boot HTTP Starter によって提供される HTTP コントローラー
前提条件
- Spring Boot を使用するよう設定された Maven ベースの Java アプリケーションプロジェクト
- JDK 8 または JDK 11 がインストールされている。
- Maven がインストールされている。
手順
以下の依存関係をアプリケーションプロジェクトの
pom.xmlファイルに追加します。pom.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプルアプリケーションのメインクラスファイルを作成します。このクラスには、要求と結果に対応する処理キューを定義するメソッドが含まれています。
/src/main/java/AmqpExampleApplication.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GET および POST リクエストを処理する REST エンドポイントを公開して、要求キューと応答キューを管理する HTTP REST コントローラーのコードを含むクラスファイルを作成します。
/src/main/java/Controller.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow メッセージングマネージャーを含むクラスファイルを作成します。Manager は、アプリケーションコンポーネントがリクエストキューにリクエストを公開する方法を制御し、その後に応答キューにサブスクライブして処理された結果を取得します。
/src/main/java/MessagesManager.java:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要求キューからテキスト文字列を受け取る大文字プロセッサーを含むクラスファイルを作成し、それを大文字に変換します。その後、プロセッサーは結果を応答キューに公開します。
/src/main/java/UppercaseProcessor.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: アプリケーションをローカルで実行し、テストします。
Maven プロジェクトのルートディレクトリーへ移動します。
cd myApp
$ cd myAppCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをパッケージ化します。
mvn clean package
$ mvn clean packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインからアプリケーションを起動します。
java -jar target/vertx-spring-boot-sample-amqp.jar
$ java -jar target/vertx-spring-boot-sample-amqp.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいターミナルウィンドウで、
localhostへ処理されるテキスト文字列が含まれる HTTPPOSTリクエストを多数送信します。curl -H "Content-Type: text/plain" -d 'Hello, World' -X POST http://localhost:8080 curl -H "Content-Type: text/plain" -d 'Hello again' -X POST http://localhost:8080
$ curl -H "Content-Type: text/plain" -d 'Hello, World' -X POST http://localhost:8080 $ curl -H "Content-Type: text/plain" -d 'Hello again' -X POST http://localhost:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow HTTP
GET要求をlocalhostに送信します。文字列を大文字で HTTP 応答を受け取ります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
その他のリソース
- Fabric8 Maven プラグインを使用して、アプリケーションを OpenShift クラスターにデプロイ できます。
- また、スタンドアロンの Red Hat Enterprise Linux でのデプロイメント 用にアプリケーションを設定することもできます。