第26章 ControlBus コンポーネント


ControlBus コンポーネント

Camel 2.11 から利用可能
controlbus: コンポーネントは、 Control Bus EIP パターン に基づいて Camel アプリケーションを 簡単に管理できます。たとえば、メッセージを エンドポイント に送信することで、ルートのライフサイクルを制御したり、パフォーマンス統計を収集したりできます。
controlbus:command[?options]
Copy to Clipboard Toggle word wrap
ここでの command には、使用するコマンドのタイプを識別する任意の文字列を指定できます。

コマンド

Expand
コマンド 説明
route routeId および action パラメーターを使用してルートを制御します。特別なキーワード current は現在のルートを示します。
言語 メッセージボディーの評価に 使用する言語 を指定できます。評価の結果がある場合は、結果はメッセージボディーに配置されます。

オプション

Expand
名前 デフォルト値 説明
routeId null ID でルートを指定し ます
action null startstop、または status のいずれかのアクションを示します。ルートを開始または停止する場合、またはメッセージボディーの出力としてルートのステータスを取得します。Camel 2.11.1 以降の suspend および resume を使用して、ルートを一時停止または再開できます。Camel 2.11.1 以降では、統計を使用して XML 形式で返されるパフォーマンスの静的を取得できます。routeId オプションを使用して、パフォーマンス統計を取得するルートを定義できます。routeId が定義されていない場合は、CamelContext 全体の統計を取得できます。
async false コントロールバスタスクを非同期で実行するかどうか。重要: このオプションが有効な場合には、タスクの結果は Exchange に設定されて いません。これは、タスクを同期的に実行する場合にのみ可能です。
loggingLevel INFO タスクの完了時またはタスクの処理中に例外が発生した場合に使用されるロギングレベル。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

サンプル

route コマンドの使用

route コマンドを使用すると、ルートを起動するなど、特定のルートで共通のタスクを簡単に実行できます。このエンドポイントに空のメッセージを送信できます。
template.sendBody("controlbus:route?routeId=foo&action=start", null);
Copy to Clipboard Toggle word wrap
ルートのステータスを取得するには、以下を実行できます。
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
Copy to Clipboard Toggle word wrap

パフォーマンス統計の取得

Camel 2.11.1 以降で利用可能
これには、JMX を有効にする必要があります(デフォルトは)。その後、ルートまたは CamelContext ごとにパフォーマンススティックを取得できます。たとえば、foo という名前のルートの静的を取得するには、以下を行います。
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
Copy to Clipboard Toggle word wrap
返される静的は XML 形式になります。ManagedRouteMBeandumpRouteStatsAsXml 操作で JMX から取得できるものと同じデータ。
CamelContext 全体の静的を取得するには、以下のように routeId パラメーターを省略します。
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
Copy to Clipboard Toggle word wrap

Simple 言語の使用

たとえば、制御バスで Simple 言語を使用すると、特定のルートを停止することができます。以下のメッセージが含まれる "controlbus:language:simple" エンドポイントにメッセージを送信することができます。
template.sendBody("controlbus:language:simple", "${camelContext.stopRoute('myRoute')}");
Copy to Clipboard Toggle word wrap
これは void 操作であるため、結果が返されません。ただし、ルートステータスが必要な場合は、以下を実行できます。
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
Copy to Clipboard Toggle word wrap
注記: route コマンドを使用してルートのライフサイクルを制御するのが簡単になります。language コマンドを使用すると、Groovy などの強力な、または Simple 言語を拡張できる言語スクリプトを実行することができます。
たとえば、Camel 自体をシャットダウンするには、次のようにします。
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
Copy to Clipboard Toggle word wrap
async=true を使用して、Camel を非同期的に停止することに注意してください。それ以外の場合は、制御バスコンポーネントに送信されたメッセージの処理中に Camel を停止しようとします。
注記
Groovy などの他の言語を使用することもできます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat