Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第26章 ControlBus コンポーネント
ControlBus コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.11 から利用可能
controlbus: コンポーネントは、 Control Bus EIP パターン に基づいて Camel アプリケーションを 簡単に管理できます。たとえば、メッセージを エンドポイント に送信することで、ルートのライフサイクルを制御したり、パフォーマンス統計を収集したりできます。
controlbus:command[?options]
controlbus:command[?options]
ここでの command には、使用するコマンドのタイプを識別する任意の文字列を指定できます。
コマンド リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コマンド | 説明 |
---|---|
route
|
routeId および action パラメーターを使用してルートを制御します。特別なキーワード current は現在のルートを示します。
|
言語
|
メッセージボディーの評価に 使用する言語 を指定できます。評価の結果がある場合は、結果はメッセージボディーに配置されます。 |
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
routeId
|
null
|
ID でルートを指定し ます 。
|
action
|
null
|
start 、stop 、または 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);
template.sendBody("controlbus:route?routeId=foo&action=start", null);
ルートのステータスを取得するには、以下を実行できます。
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
パフォーマンス統計の取得 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.11.1 以降で利用可能
これには、JMX を有効にする必要があります(デフォルトは)。その後、ルートまたは CamelContext ごとにパフォーマンススティックを取得できます。たとえば、foo という名前のルートの静的を取得するには、以下を行います。
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
返される静的は XML 形式になります。
ManagedRouteMBean
で dumpRouteStatsAsXml
操作で JMX から取得できるものと同じデータ。
CamelContext 全体の静的を取得するには、以下のように routeId パラメーターを省略します。
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
Simple 言語の使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
たとえば、制御バスで Simple 言語を使用すると、特定のルートを停止することができます。以下のメッセージが含まれる
"controlbus:language:simple"
エンドポイントにメッセージを送信することができます。
template.sendBody("controlbus:language:simple", "${camelContext.stopRoute('myRoute')}");
template.sendBody("controlbus:language:simple", "${camelContext.stopRoute('myRoute')}");
これは void 操作であるため、結果が返されません。ただし、ルートステータスが必要な場合は、以下を実行できます。
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
注記:
route
コマンドを使用してルートのライフサイクルを制御するのが簡単になります。language
コマンドを使用すると、Groovy などの強力な、または Simple 言語を拡張できる言語スクリプトを実行することができます。
たとえば、Camel 自体をシャットダウンするには、次のようにします。
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
async=true
を使用して、Camel を非同期的に停止することに注意してください。それ以外の場合は、制御バスコンポーネントに送信されたメッセージの処理中に Camel を停止しようとします。
注記
Groovy などの他の言語を使用することもできます。
- ControlBus EIP
- JMX コンポーネント
- Camel での JMX の使用