検索

2.2. ブースタープロジェクトの生成

download PDF

Fuse ブースタープロジェクトは、スタンドアロンアプリケーションの実行を手助けする開発者向けのプロジェクトです。ここでは、ブースタープロジェクトの 1 つである Circuit Breaker ブースターの生成手順を説明します。この演習では、Fuse on Spring Boot の便利なコンポーネントを使用します。

Netflix/Hystrix サーキットブレーカーを使用すると、ネットワーク接続の中断やバックエンドサービスの一時的な利用停止に分散アプリケーションが対処できるようになります。サーキットブレーカーパターンの基本概念は、バックエンドサービスが一時的に利用できなくなった場合に備えて、依存するサービスの損失を自動的に検出し、代替動作をプログラムで作成できるようにすることです。

Fuse サーキットブレーカーブースターは、次の 2 つの関連サービスで構成されます。

  • 呼び名を返すバックエンドサービスである name サービス。
  • 名前を取得する name サービスを呼び出し、文字列 Hello, NAME を返すフロントエンドサービスである greetings サービス。

このブースターデモンストレーションでは、Hystrix サーキットブレーカーは greetings サービスと name サービスとの間に挿入されます。バックエンドの name サービスが利用できなくなると、name サービスが再起動するまでの間に greetings サービスはブロックされず、代替動作にフォールバックして即座にクライアントに応答します。

前提条件

手順

  1. https://developers.redhat.com/launch に移動します。
  2. START をクリックします。

    ランチャーウィザードによって、Red Hat アカウントにログインするよう要求されます。

  3. Log in or register ボタンをクリックし、ログインします。
  4. Launcher ページで Deploy an Example Application ボタンをクリックします。
  5. Create Example Application ページで Create Example Application as フィールドに名前 fuse-circuit-breaker を入力します。
  6. Select an Example をクリックします。
  7. Example ダイアログで、Circuit Breaker オプションを選択します。Select a Runtime ドロップダウンメニューが表示されます。

    1. Select a Runtime ドロップダウンメニューで Fuse を選択します。
    2. バージョンのドロップダウンメニューで 7 . 5 (Red Hat Fuse) を選択します。2.21.2 (Community) バージョンは選択しないでください。
    3. Save をクリックします。
  8. Create Example Application ページで Download をクリックします。
  9. Your Application is Ready ダイアログが表示されたら、Download.zip をクリックします。ブラウザーが生成されたブースタープロジェクト (ZIP ファイルとしてパッケージ) をダウンロードします。
  10. アーカイブユーティリティーを使用して、生成されたプロジェクトをローカルファイルシステムの任意の場所に展開します。

2.2.1. Circuit Breaker ブースター

Netflix/Hystrix サーキットブレーカーコンポーネントは、ネットワーク接続の中断や、バックエンドサービスの一時的な利用停止に分散アプリケーションが対応できるようにします。サーキットブレーカーパターンの基本概念は、バックエンドサービスが一時的に利用できなくなった場合に、依存するサービスの損失が自動的に検出され、代替動作をプログラムで作成できることです。

Fuse サーキットブローカーブースターは 2 つの関連サービスで設定されます。

  • 対象の名前を返す name サービス
  • 名前を取得するために name サービスを呼び出し、文字列 Hello, NAME を返す greetings サービス

このデモンストレーションでは、Hystrix サーキットブレーカーは greetings サービスと name サービスとの間に挿入されます。name サービスが利用できなくなると、greetings サービスは name サービスが再起動するまでの間にブロックまたはタイムアウトせずに、代替動作にフォールバックして即座にクライアントに応答することができます。

2.2.1.1. サーキットブレーカーブースターのビルドと実行

Circuit Breaker ミッションの 「ブースタープロジェクトの生成」 の手順に従って、Circuit Breaker ブースタープロジェクトをビルドして実行します。

  1. シェルプロンプトを開き、Maven を使用してコマンドラインからプロジェクトをビルドします。

    cd PROJECT_DIR
    mvn clean package
  2. 新しいシェルプロンプトを開き、以下のように 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)
  3. 新しいシェルプロンプトを開き、以下のように 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 エンドポイントを公開します。

  4. http://localhost:8080 にアクセスします。

    このページを開くと、Greeting Service が呼び出されます。

    cb greetingservice1

    このページには、サーキットブレーカーの状態を監視する Hystrix ダッシュボードへのリンクも提供されます。

    cb hystrix ダッシュボード
  5. Camel Hystrix によって提供されるサーキットブレーカー機能を実証するには、name サービスが実行されているシェルプロンプトウインドウで Ctrl+C を押して、バックエンド name サービスを中止します。

    これで name サービスが利用できなくなるため、呼び出されたときに greetings サービスがハングしないよう、サーキットブレーカーが作動します。

  6. Hystrix Monitor ダッシュボードおよび Greeting Service の出力で変更を確認します。

    cb greetingservice2

2.2.2. 外部化設定ブースター

Externalized Configuration (外部化設定) ブースターは、Apache Camel ルートの設定を外部化する方法の例を提供します。Spring Boot スタンドアロンデプロイメントでは、設定データは application.properties ファイルに保存されます。

注記

Fuse on OpenShift デプロイメントでは、設定データは ConfigMap オブジェクトに保存されます。

2.2.2.1. Externalized Configuration ブースターのビルドおよび実行

Externalized Configuration ミッションの 「ブースタープロジェクトの生成」 の手順に従った後、以下のステップに従って Externalized Configuration ブースターをローカルマシンのスタンドアロンプロジェクトとしてビルドおよび実行します。

  1. プロジェクトをダウンロードし、ローカルファイルシステムでアーカイブを展開します。
  2. プロジェクトをビルドします。

    cd PROJECT_DIR
    mvn clean package
  3. サービスを実行します。

    mvn spring-boot:run
  4. Web ブラウザーで http://localhost:8080 を開きます。このページは、5 秒ごとに Greeting Service を呼び出します。Greetings サービスは、target/classes/application.properties ファイルから booster.nameToGreetvalue を使用して応答します。

    Greeting Service は default へのグリーティングを 5 秒ごとに出力します。

    configmapbooster
  5. booster.nameToGreet の値を変更します。

    1. エディターで target/classes/application.properties ファイルを開きます。
    2. booster.nameToGreetvalue の値を、default から他の値 (例: Thomas) に変更します。

      booster.nameToGreetvalue=Thomas
  6. ターミナルウィンドウで CTRL+C を押してサービスを停止します。
  7. サービスを再実行します。

    mvn spring-boot:run
  8. Web ブラウザーで http://localhost:8080 ページに戻り、Greeting Service の Results ウィンドウで変更された値を確認します。

    configmapbooster2

2.2.3. REST API ブースター

REST API Level 0 のミッションでは、REST フレームワークを使用して、HTTP 経由でリモートプロシージャー呼び出しエンドポイントにビジネスオペレーションをマッピングする方法を示します。このミッションは、Richardson Maturity Model の Level 0 に該当します。

このブースターは、HTTP プロトコルを使用して Apache Camel によって公開されるリモートサービスと対話するメカニズムを導入します。この Fuse ブースターを使用すると、迅速に REST API のプロトタイプを作成し、柔軟に REST API を設定することができます。

このブースターを使用して、以下を行います。

  • camel/greetings/{name} エンドポイントで HTTP GET 要求を実行します。このリクエストは、ペイロード Hello, $name! を使用して JSON 形式の応答を生成します ($name は HTTP GET リクエストからの URL パラメーターの値に置き換えられます)。
  • URL {name} パラメーターの値を変更すると、変更後の値が応答に反映されます。
  • REST API の Swagger ページを表示します。

2.2.3.1. REST API ブースターのビルドおよび実行

REST API ミッションの 「ブースタープロジェクトの生成」 の手順に従って、REST API ブースターをローカルマシンでスタンドアロンプロジェクトとしてビルドおよび実行します。

  1. プロジェクトをダウンロードし、ローカルファイルシステムでアーカイブを展開します。
  2. プロジェクトをビルドします。

    cd PROJECT_DIR
    mvn clean package
  3. サービスを実行します。

    mvn spring-boot:run
  4. Web ブラウザーで http://localhost:8080 を開きます。
  5. HTTP GET リクエストの例を実行するには、camel/greetings/{name} ボタンをクリックします。

    localhost:8080/camel/greetings/Jacopo URL で新しい Web ブラウザーウインドウが開きます。URL {name} パラメーターのデフォルト値は Jacopo です。

    ブラウザーウインドウに JSON 応答が表示されます。

    restbooster2
  6. {name} ' パラメーターの値を変更するには、URL を変更します。たとえば、名前を Thomas に変更するには、URL 'localhost:8080/camel/greetings/Thomas を使用します。

    ブラウザーウインドウに更新された JSON 応答が表示されます。

    restbooster3
  7. REST API の Swagger ページを表示するには、API Swagger ページボタンをクリックします。

    ブラウザーウィンドウに API swagger ページが表示されます。

    restbooster4
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.