第2章 Spring Boot の使用
2.1. サーキットブレーカーブースターの概要 リンクのコピーリンクがクリップボードにコピーされました!
Netflix/Hystrix サーキットブレーカーは、ネットワーク接続の中断や、バックエンドサービスの一時的な利用停止に分散アプリケーションが対応できるようにします。サーキットブレーカーパターンの基本概念は、バックエンドサービスが一時的に利用できなくなった場合に、依存するサービスの損失が自動的に検出され、代替動作をプログラムで作成できることです。
Fuse サーキットブローカーブースターは 2 つの関連サービスで構成されます。
- 対応する名前を返すバックエンドサービスである name サービス。
-
名前を取得するために name サービスを呼び出し、文字列
Hello, NAME
を返すフロントエンドサービスである greetings サービス。
このブースターデモンストレーションでは、Hystrix サーキットブレーカーは greetings サービスと name サービスとの間に挿入されます。バックエンドの name サービスが利用できなくなると、name サービスが再起動するまで待機する間ブロックする代わりに、greetings サービスは代替動作にフォールバックして即座にクライアントに応答します。
2.2. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
ブースターデモンストレーションをビルドおよび実行するには、以下をインストールします。
- サポートされるバージョンの Java Developer Kit (JDK)。詳細は「Red Hat Fuse でサポートされる構成」を参照してください。
- Apache Maven 3.3.x 以上。Maven の Download ページを参照してください。Maven の詳細は「付録A Maven を使用する準備」を参照してください。
2.3. ブースタープロジェクトの生成 リンクのコピーリンクがクリップボードにコピーされました!
サーキットブレーカーのブースタープロジェクトを生成するには、以下の手順を行います。
- https://developers.redhat.com/launch に移動します。
START をクリックします。
ランチャーウィザードによって、Red Hat アカウントにログインするよう要求されます。
- Log in or register ボタンをクリックし、ログインします。
- Launcher ページで Deploy an Example Application ボタンをクリックします。
- Create Example Application ページで Create Example Application as フィールドに名前 fuse-circuit-breaker を入力します。
- Select an Example をクリックします。
Example ダイアログで、Circuit Breaker オプションを選択します。Select a Runtime ドロップダウンメニューが表示されます。
- Select a Runtime ドロップダウンメニューで Fuse を選択します。
-
バージョンのドロップダウンメニューで 7.3.0 (Red Hat Fuse) を選択します。
2.21.2 (Community)
バージョンは選択しないでください。 - Save をクリックします。
- Create Example Application ページで Download をクリックします。
-
Your Application is Ready ダイアログが表示されたら、
Download.zip
をクリックします。ブラウザーが生成されたブースタープロジェクト (ZIP ファイルとしてパッケージ) をダウンロードします。 - アーカイブユーティリティーを使用して、生成されたプロジェクトをローカルファイルシステムの任意の場所に展開します。
2.4. ブースターのビルドおよび実行 リンクのコピーリンクがクリップボードにコピーされました!
ブースタープロジェクトをビルドおよび実行するには、以下の手順を実行します。
シェルプロンプトを開き、Maven を使用してコマンドラインからプロジェクトをビルドします。
cd fuse-circuit-breaker
cd fuse-circuit-breaker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn clean package
mvn clean package
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Maven によってプロジェクトがビルドされた後、Build Success メッセージが表示されます。
新しいシェルプロンプトを開き、以下のように name サービスを起動します。
cd name-service
cd name-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn spring-boot:run -DskipTests -Dserver.port=8081
mvn spring-boot:run -DskipTests -Dserver.port=8081
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Spring Boot が起動すると、以下のような出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいシェルプロンプトを開き、以下のように greetings サービスを起動します。
cd greetings-service
cd greetings-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn spring-boot:run -DskipTests
mvn spring-boot:run -DskipTests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Spring Boot が起動すると、以下のような出力が表示されます。
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)
... 2019-05-06 20:22:19.051 INFO 9729 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2019-05-06 20:22:19.115 INFO 9729 --- [ main] b.c.e.u.UndertowEmbeddedServletContainer : Undertow started on port(s) 8080 (http) 2019-05-06 20:22:19.123 INFO 9729 --- [ main] com.redhat.fuse.boosters.cb.Application : Started Application in 7.68 seconds (JVM running for 12.66)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow greetings サービスは
http://localhost:8080/camel/greetings
URL で REST エンドポイントを公開します。web ブラウザーで URL を開くか、別のシェルプロンプトで以下の
curl
コマンドを入力して、REST エンドポイントを呼び出します。curl http://localhost:8080/camel/greetings
curl http://localhost:8080/camel/greetings
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答は次のとおりです。
{"greetings":"Hello, Jacopo"}
{"greetings":"Hello, Jacopo"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Camel Hystrix によって提供されるサーキットブレーカー機能を実証するには、name サービスが実行されているシェルプロンプトウインドウで Ctrl-C を入力し、バックエンド name サービスを中止します。
これで name サービスが利用できなくなるため、呼び出されたときに greetings サービスがハングしないよう、サーキットブレーカーが作動します。
web ブラウザーで
http://localhost:8080/camel/greetings
を開くか、別のシェルプロンプトウインドウに以下のcurl
コマンドを入力して、greetings REST エンドポイントを呼び出します。curl http://localhost:8080/camel/greetings
curl http://localhost:8080/camel/greetings
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 応答は次のとおりです。
{"greetings":"Hello, default fallback"}
{"greetings":"Hello, default fallback"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow greetings サービスが実行されているウインドウで、ログに以下のメッセージシーケンスが表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
この例に関する詳細は、
greetings-service
の実行中に http://localhost:8080/ で Circuit Breaker - Red Hat Fuse ページを開いてください。このページには、サーキットブレーカーの状態を監視する Hystrix ダッシュボードへのリンクが含まれます。