2.2. サーキットブレーカーブースターのビルドと実行
Netflix/Hystrix サーキットブレーカーコンポーネントは、ネットワーク接続の中断や、バックエンドサービスの一時的な利用停止に分散アプリケーションが対応できるようにします。サーキットブレーカーパターンの基本概念は、バックエンドサービスが一時的に利用できなくなった場合に、依存するサービスの損失が自動的に検出され、代替動作をプログラムで作成できることです。
Fuse サーキットブローカーブースターは 2 つの関連サービスで設定されます。
- 対象の名前を返す name サービス。
-
名前を取得するために name サービスを呼び出し、文字列
Hello, NAME
を返す greetings サービス。
このデモンストレーションでは、Hystrix サーキットブレーカーは greetings サービスと name サービスとの間に挿入されます。name サービスが利用できなくなると、greetings サービスは name サービスが再起動するまでの間にブロックまたはタイムアウトせずに、代替動作にフォールバックして即座にクライアントに応答することができます。
前提条件
- 「ブースタープロジェクトの生成」 に記載されている手順を完了している必要があります。
手順
以下の手順に従って、サーキットブレーカーブースタープロジェクトをビルドおよび実行します。
シェルプロンプトを開き、Maven を使用してコマンドラインからプロジェクトをビルドします。
cd PROJECT_DIR mvn clean package
新しいシェルプロンプトを開き、以下のように name サービスを起動します。
cd name-service mvn spring-boot:run -DskipTests -Dserver.port=8081
Spring Boot が起動すると、以下のような出力が表示されます。
... 2017-12-08 15:44:24.223 INFO 22758 --- [ main] o.a.camel.spring.SpringCamelContext : Total 1 routes, of which 1 are started 2017-12-08 15:44:24.227 INFO 22758 --- [ main] o.a.camel.spring.SpringCamelContext : Apache Camel 2.20.0 (CamelContext: camel-1) started in 0.776 seconds 2017-12-08 15:44:24.234 INFO 22758 --- [ main] org.jboss.fuse.boosters.cb.Application : Started Application in 4.137 seconds (JVM running for 4.744)
新しいシェルプロンプトを開き、以下のように greetings サービスを起動します。
cd greetings-service mvn spring-boot:run -DskipTests
Spring Boot が起動すると、以下のような出力が表示されます。
... 2017-12-08 15:46:58.521 INFO 22887 --- [ main] o.a.c.c.s.CamelHttpTransportServlet : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=] 2017-12-08 15:46:58.524 INFO 22887 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2017-12-08 15:46:58.536 INFO 22887 --- [ main] org.jboss.fuse.boosters.cb.Application : Started Application in 6.263 seconds (JVM running for 6.819)
greetings サービスは、URL
http://localhost:8080/camel/greetings
で REST エンドポイントを公開します。http://localhost:8080 にアクセスします。
このページを開くと、Greeting Service が呼び出されます。
このページには、サーキットブレーカーの状態を監視する Hystrix ダッシュボードへのリンクも提供されます。
Camel Hystrix によって提供されるサーキットブレーカー機能を実証するには、name サービスが実行されているシェルプロンプトウインドウで Ctrl+C を押して、バックエンド name サービスを中止します。
これで name サービスが利用できなくなるため、呼び出されたときに greetings サービスがハングしないよう、サーキットブレーカーが作動します。
Hystrix Monitor ダッシュボードおよび Greeting Service の出力で変更を確認します。