4.3. Camel ルートの作成と実行
init コマンドを使用して、新しい基本ルートを作成できます。たとえば、XML ルートを作成するには、次のコマンドを実行します。
camel init cheese.xml
camel init cheese.xml
これにより、サンプルルートを含むファイル Cheese.xml (現在のディレクトリー内) が作成されます。
ファイルを実行するには、次のコマンドを実行します。
camel run cheese.xml
camel run cheese.xml
Camel では、YAML、XML、Java、Groovy など、サポートされている DSL を作成して実行できます。
新しい .java ルートを作成するには、次を実行します。
camel init foo.java
camel init foo.java
init コマンドを使用すると、Camel はデフォルトで現在のディレクトリーにファイルを作成します。ただし、--directory オプションを使用すると、指定したディレクトリーにファイルを作成できます。たとえば、foobar という名前のフォルダーに作成するには、次を実行します。
camel init foo.java --directory=foobar
camel init foo.java --directory=foobar
--directory オプションを使用すると、このディレクトリーがすでに存在する場合、Camel は自動的に削除します。
4.3.1. 複数のファイルからのルート実行 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、2 つの YAML ファイルを実行するなど、複数のファイルからルートを実行できます。
camel run one.yaml two.yaml
camel run one.yaml two.yaml
yaml と Java などの 2 つの異なるファイルからルートを実行できます。
camel run one.yaml hello.java
camel run one.yaml hello.java
ワイルドカード (つまり *) を使用して、すべての yaml ファイルを実行するなど、複数のファイルに一致させることができます。
camel run *.yaml
camel run *.yaml
foo* で始まるすべてのファイルを実行できます。
camel run foo*
camel run foo*
ディレクトリー内のすべてのファイルを実行するには、次を使用します。
camel run *
camel run *
run ゴールは、application.properties などの properties のあるファイルも検出できます。
4.3.2. 入力パラメーターからのルート実行 リンクのコピーリンクがクリップボードにコピーされました!
非常に小さな Java ルートの場合、以下に示すように、ルートを CLI 引数として指定できます。
camel run --code='from("kamelet:beer-source").to("log:beer")'
camel run --code='from("kamelet:beer-source").to("log:beer")'
CLI 引数はファイルよりも使用が少し面倒であるため、これは非常に制限されています。入力パラメーターからルートを実行する場合は、以下の点に留意してください。
- Java DSL コードのみがサポートされています。
- コードは一重引用符で囲まれているため、Java DSL では二重引用符を使用できます。
- コードは、端末および JBang から提供できるリテラル値に制限されます。
-
すべてのルートは単一の
--codeパラメーターで定義する必要があります。
--code の使用は、非常に迅速で小規模なプロトタイプにのみ使用できます。
4.3.3. ライブリロードを備えた開発モード リンクのコピーリンクがクリップボードにコピーされました!
次に示すように --dev オプションを使用して、ソースファイルの更新 (保存) 時にルートのライブリロードに伴う開発モードを有効にできます。
camel run foo.yaml --dev
camel run foo.yaml --dev
Camel インテグレーションの実行中に、YAML ルートを更新し、保存時に更新できます。このオプションは、java を含むすべての DLS で機能します。次に例を示します。
camel run hello.java --dev
camel run hello.java --dev
ライブリロードオプションは開発目的のみを目的としており、JVM クラスのロードの問題など、リロードに関する問題が発生した場合は、インテグレーションを再起動する必要がある場合があります。
4.3.4. 開発者コンソール リンクのコピーリンクがクリップボードにコピーされました!
開発者にさまざまな情報を表示する開発者コンソールを有効にすることができます。開発者コンソールを有効にするには、次を実行します。
camel run hello.java --console
camel run hello.java --console
これにより、Web ブラウザーから http://localhost:8080/q/dev (デフォルト) にあるコンソールにアクセスできるようになります。このリンクは、Camel の起動時にログにも表示されます。
コンソールでは、メッセージの処理に最も時間がかかる上位ルートのレポートなど、実行中の Camel インテグレーションに関する洞察を得ることができます。その後、これらのルート内で最も時間がかかっている EIP を個別に特定できます。
開発者コンソールはデータを JSON 形式で出力することもでき、サードパーティーのツールで情報を取得するために使用できます。たとえば、curl 経由で上位のルートを出力するには、次を実行します。
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/
JSON データをカラーでフォーマットして出力できる jq が インストールされている場合は、次を実行します。
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/ | jq
curl -s -H "Accept: application/json" http://0.0.0.0:8080/q/dev/top/ | jq
4.3.5. プロファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI の profile は Camel CLI で自動的にロードされる設定を参照する名前 (ID) です。デフォルトのプロファイルは、application という名前が付けられ、これは (スマートデフォルト) で Camel CLI が application.properties (存在する場合) を自動的にロードできるようにします。これは、同じ名前の特定のプロパティーファイルに一致するプロファイルを作成できることを意味します。
たとえば、local という名前のプロファイルを使用して実行すると、Camel CLI は application.properties の代わりに local.properties をロードします。プロファイルを使用するには、次のようにコマンドラインオプション --profile を指定します。
camel run hello.java --profile=local
camel run hello.java --profile=local
一度に指定できるプロファイル名は 1 つだけです。たとえば、--profile=local,two は無効です。
プロパティー ファイルでは、Camel Main のすべての設定を設定できます。ログマスキングをオフにして有効にするには、次のコマンドを実行します。
camel.main.streamCaching=false camel.main.logMask=true
camel.main.streamCaching=false
camel.main.logMask=true
また、camel-kafka などの Camel コンポーネントを設定して、URL をブローカーに宣言することもできます。
camel.component.kafka.brokers=broker1:9092,broker2:9092,broker3:9092
camel.component.kafka.brokers=broker1:9092,broker2:9092,broker3:9092
camel.jbang で始まるキーは、Camel CLI によって内部的に使用される予約キーであり、Camel CLI コマンドの引数を事前に設定できます。
4.3.6. インターネット経由での JAR のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Camel CLI は Camel の実行に必要な依存関係を自動的に解決します。これは、JBang と Camel によってそれぞれ実行されます。Camel 自体は、クラスパス上で現在利用できない JAR がコンポーネントに必要かどうかを実行時に検出し、JAR を自動的にダウンロードできます。
Camel はこれらの JAR を次の順序でダウンロードします。
-
~/.m2/repositoryのローカルディスク - インターネット上の Maven Central
- インターネット上のカスタムサードパーティー Maven リポジトリー
-
~/.m2/settings.xmlのアクティブなプロファイル、または--maven-settingsオプションを使用して指定された設定ファイルにあるすべてのリポジトリー
Camel CLI をインターネット経由でダウンロードしない場合は、次のように --download オプションを使用してこれをオフにできます。
camel run foo.java --download=false
camel run foo.java --download=false
4.3.7. カスタム JAR の追加 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI は、独自のリリースからの Camel コンポーネント、言語、データ形式の依存関係を自動的に検出します。これは、使用する JAR を指定する必要がないことを意味します。ただし、サードパーティーのカスタム JAR を追加する必要がある場合は、次のように、Maven GAV 構文 (groupId:artifactId:version) の CLI 引数として --deps を使用してこれらを指定できます。
camel run foo.java --deps=com.foo:acme:1.0
camel run foo.java --deps=com.foo:acme:1.0
To add a Camel dependency explicitly you can use a shorthand syntax (starting with `camel:` or `camel-`):
To add a Camel dependency explicitly you can use a shorthand syntax (starting with `camel:` or `camel-`):
camel run foo.java --deps=camel-saxon
camel run foo.java --deps=camel-saxon
複数の依存関係をコンマで区切って指定できます。
camel run foo.java --deps=camel-saxon,com.foo:acme:1.0
camel run foo.java --deps=camel-saxon,com.foo:acme:1.0
4.3.8. サードパーティーの Maven リポジトリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI は、まずローカルリポジトリーからダウンロードし、次にオンラインの Maven Central リポジトリーからダウンロードします。サードパーティーの Maven リポジトリーからダウンロードするには、これを CLI 引数として、または application.properties ファイルで指定する必要があります。
camel run foo.java --repos=https://packages.atlassian.com/maven-external
camel run foo.java --repos=https://packages.atlassian.com/maven-external
複数のリポジトリーをコンマで区切って指定できます。
サードパーティーの Maven リポジトリーの設定は、次に示すように、Camel.jbang.repos キーを使用して application.properties ファイルで設定されます。
camel.jbang.repos=https://packages.atlassian.com/maven-external
camel.jbang.repos=https://packages.atlassian.com/maven-external
Camel ルートを実行すると、application.properties が自動的に読み込まれます。
camel run foo.java
camel run foo.java
使用するプロパティーファイルを明示的に指定することもできます。
camel run foo.java application.properties
camel run foo.java application.properties
または、これをプロファイルとして指定することもできます。
camel run foo.java --profile=application
camel run foo.java --profile=application
ここで、プロファイル ID はプロパティーファイルの名前です。
4.3.9. Maven の使用設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、既存の ~/.m2/settings.xml ファイルがロードされるため、Maven 解決プロセスの動作を変更することができます。Maven 設定ファイルは、Maven ミラー、認証情報設定 (暗号化される可能性がある)、またはアクティブなプロファイル、および追加のリポジトリーに関する情報を提供します。
Maven リポジトリーは認証を使用でき、Maven で認証情報を設定するには <server> 要素を使用します。
<server>
<id>external-repository</id>
<username>camel</username>
<password>{SSVqy/PexxQHvubrWhdguYuG7HnTvHlaNr6g3dJn7nk=}</password>
</server>
<server>
<id>external-repository</id>
<username>camel</username>
<password>{SSVqy/PexxQHvubrWhdguYuG7HnTvHlaNr6g3dJn7nk=}</password>
</server>
パスワードはプレーンテキストを使用して指定できますが、最初に Maven マスターパスワードを設定してから、それを使用してリポジトリーパスワードを設定することを推奨します。
mvn -emp
$ mvn -emp
Master password: camel
{hqXUuec2RowH8dA8vdqkF6jn4NU9ybOsDjuTmWvYj4U=}
上記のパスワードは、次のように ~/.m2/settings-security.xml ファイルに追加する必要があります。
<settingsSecurity>
<master>{hqXUuec2RowH8dA8vdqkF6jn4NU9ybOsDjuTmWvYj4U=}</master>
</settingsSecurity>
<settingsSecurity>
<master>{hqXUuec2RowH8dA8vdqkF6jn4NU9ybOsDjuTmWvYj4U=}</master>
</settingsSecurity>
その後、通常のパスワードを設定できます。
mvn -ep
$ mvn -ep
Password: camel
{SSVqy/PexxQHvubrWhdguYuG7HnTvHlaNr6g3dJn7nk=}
その後、このパスワードを <server>/<password> 設定で使用できます。
デフォルトでは、Maven は ~/.m2/settings-security.xml ファイルからマスターパスワードを読み取りますが、これをオーバーライドすることもできます。settings.xml ファイル自体の場所は、次のように指定できます。
camel run foo.java --maven-settings=/path/to/settings.xml --maven-settings-security=/path/to/settings-security.xml
camel run foo.java --maven-settings=/path/to/settings.xml --maven-settings-security=/path/to/settings-security.xml
場所 (~/.m2/settings.xml であっても) を想定せずに Camel アプリケーションを実行したい場合は、このオプションを使用します。
camel run foo.java --maven-settings=false
camel run foo.java --maven-settings=false
4.3.10. GitHub でホストされているルートの実行 リンクのコピーリンクがクリップボードにコピーされました!
Camels リソースローダーを使用して、GitHub でホストされているルートを実行できます。たとえば、Camel K サンプルの 1 つを実行するには、次を使用します。
camel run github:apache:camel-kamelets-examples:jbang/hello-java/Hey.java
camel run github:apache:camel-kamelets-examples:jbang/hello-java/Hey.java
GitHub の https URL を使用することもできます。たとえば、Web ブラウザーからサンプルを参照し、ブラウザーウィンドウから URL をコピーして、Camel CLI でサンプルを実行できます。
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/hello-java
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/hello-java
すべての groovy ファイルを実行するなど、ワイルドカード (つまり \*) を使用して複数のファイルと一致させることもできます。
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/*.groovy
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/*.groovy
または、rou* で始まるすべてのファイルを実行することもできます。
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/rou*
camel run https://github.com/apache/camel-kamelets-examples/tree/main/jbang/languages/rou*
4.3.10.1. GitHub Gist からのルート実行 リンクのコピーリンクがクリップボードにコピーされました!
GitHub の要点を使用すると、簡単に実行できる小さな Camel ルートを共有する簡単な方法です。たとえば、Gist を実行するには、次を使用します。
camel run https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
camel run https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
Gist には 1 つ以上のファイルを含めることができ、Camel CLI はすべての関連ファイルを収集するため、Gist には複数のルート、プロパティーファイル、および Java Bean を含めることができます。
4.3.11. GitHub でホストされているルートのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI を使用すると、既存のサンプルを GitHub からローカルディスクにダウンロードできます。これにより、サンプルを変更してローカルで実行できるようになります。たとえば、次のコマンドを実行して dependency injection 例をダウンロードできます。
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection
次に、ファイル (サブフォルダーではなく) が現在のディレクトリーにダウンロードされます。次に、次のようにしてサンプルをローカルで実行できます。
camel run *
camel run *
--directory オプションを使用してファイルを新しいフォルダーにダウンロードすることもできます。たとえば、ファイルを myproject という名前のフォルダーにダウンロードするには、次のコマンドを実行します。
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection --directory=myproject
camel init https://github.com/apache/camel-kamelets-examples/tree/main/jbang/dependency-injection --directory=myproject
--directory オプションを使用すると、このディレクトリーがすでに存在する場合、Camel は自動的に削除します。
この例を開発モードで実行して、ソースコードの変更をホットデプロイすることができます。
camel run * --dev
camel run * --dev
単一のファイルをダウンロードできます。たとえば、Camel K サンプルの 1 つをダウンロードするには、次を実行します。
camel init https://github.com/apache/camel-k-examples/blob/main/generic-examples/languages/simple.groovy
camel init https://github.com/apache/camel-k-examples/blob/main/generic-examples/languages/simple.groovy
これは素晴らしいルートで、次のように実行できます (または * を使用します)。
camel run simple.groovy
camel run simple.groovy
4.3.11.1. GitHub Gist からのルートのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
次のように Gist からファイルをダウンロードできます。
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92
これにより、ファイルがローカルディスクにダウンロードされ、後で実行できるようになります。
camel run *
camel run *
--directory オプションを使用して新しいフォルダーにダウンロードできます。たとえば、foobar という名前のフォルダーにダウンロードするには、次のコマンドを実行します。
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92 --directory=foobar
camel init https://gist.github.com/davsclaus/477ddff5cdeb1ae03619aa544ce47e92 --directory=foobar
--directory オプションを使用すると、このディレクトリーがすでに存在する場合、Camel は自動的に削除します。
4.3.12. 特定の Camel バージョンの使用 リンクのコピーリンクがクリップボードにコピーされました!
次のように、実行する Camel バージョンを指定できます。
jbang run -Dcamel.jbang.version=4.0.0 camel@apache/camel [command]
jbang run -Dcamel.jbang.version=4.0.0 camel@apache/camel [command]
Camel の古いバージョンは、Camel CLI での動作が最新バージョンより劣る可能性があります。Camel 3.18 以降のバージョンを使用することを推奨します。
次のようなスナップショットを使用して最先端の開発を試すこともできます。
jbang run --fresh -Dcamel.jbang.version=4.0.0-SNAPSHOT camel@apache/camel [command]
jbang run --fresh -Dcamel.jbang.version=4.0.0-SNAPSHOT camel@apache/camel [command]
4.3.13. Camel K インテグレーションまたはバインディングの実行 リンクのコピーリンクがクリップボードにコピーされました!
Camel は、CRD 形式 (Kubernetes カスタムリソース定義) の Camel K インテグレーションとバインディングファイルの実行をサポートしています。たとえば、joker.yaml という名前の kamelet バインディングファイルを実行するには、次のようにします。
camel run joke.yaml
camel run joke.yaml
4.3.14. クリップボードから実行 リンクのコピーリンクがクリップボードにコピーされました!
Camel ルートは OS クリップボードから直接実行できます。これにより、コードをコピーして、ルートをすぐに実行できます。
camel run clipboard.<extension>
camel run clipboard.<extension>
ここで、<extension> は、クリップボードのコンテンツのタイプ (java、xml、yaml など) です。
たとえば、これをクリップボードにコピーして、ルートを実行できます。
<route> <from uri="timer:foo"/> <log message="Hello World"/> </route>
<route>
<from uri="timer:foo"/>
<log message="Hello World"/>
</route>
camel run clipboard.xml
camel run clipboard.xml
4.3.15. ローカルの Camel インテグレーションの制御 リンクのコピーリンクがクリップボードにコピーされました!
現在実行中の Camel インテグレーションをリスト表示するには、ps オプションを使用します。
camel ps PID NAME READY STATUS AGE 61818 sample.camel.MyCamelApplica… 1/1 Running 26m38s 62506 test1 1/1 Running 4m34s
camel ps
PID NAME READY STATUS AGE
61818 sample.camel.MyCamelApplica… 1/1 Running 26m38s
62506 test1 1/1 Running 4m34s
これには、PID、インテグレーションの名前、経過時間がリストされます。
stop コマンドを使用すると、これらの実行中の Camel インテグレーションを停止できます。たとえば、test1 を停止するには、次を実行します。
camel stop test1 Stopping running Camel integration (pid: 62506)
camel stop test1
Stopping running Camel integration (pid: 62506)
PID を使用してインテグレーションを停止できます。
camel stop 62506 Stopping running Camel integration (pid: 62506)
camel stop 62506
Stopping running Camel integration (pid: 62506)
stop コマンドは入力で始まるインテグレーションと一致するため、フルネームを入力する必要はありません。たとえば、camel stop t と入力すると、t で始まるすべてのインテグレーションを停止できます。
すべてのインテグレーションを停止するには、次のように --all オプションを使用します。
camel stop --all Stopping running Camel integration (pid: 61818) Stopping running Camel integration (pid: 62506)
camel stop --all
Stopping running Camel integration (pid: 61818)
Stopping running Camel integration (pid: 62506)
4.3.16. Spring Boot と Quarkus のインテグレーションの制御 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI は、デフォルトでは、CLI を使用して実行されている Camel インテグレーション (camel run foo.java など) のみを制御します。
CLI が Spring Boot または Quarkus アプリケーションを制御および管理できるようにするには、これらのプロジェクトに依存関係を追加して Camel CLI とインテグレーションする必要があります。
Spring Boot
Spring Boot アプリケーションに、次の依存関係を追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cli-connector-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cli-connector-starter</artifactId>
</dependency>
Quarkus
Quarkus アプリケーションに、次の依存関係を追加します。
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cli-connector</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-cli-connector</artifactId>
</dependency>
4.3.17. Camel インテグレーションのステータスの取得 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI の get コマンドは、稼働中の Camel インテグレーションの 1 つまたはすべてに関する Camel 固有のステータスを取得するために使用されます。実行中の Camel インテグレーションの状態を表示するには、以下を実行します。
camel get PID NAME CAMEL PLATFORM READY STATUS AGE TOTAL FAILED INFLIGHT SINCE-LAST 61818 MyCamel 3.20.1-SNAPSHOT Spring Boot v2.7.3 1/1 Running 28m34s 854 0 0 0s/0s/- 63051 test1 3.20.1-SNAPSHOT JBang 1/1 Running 18s 14 0 0 0s/0s/- 63068 mygroovy 3.20.1-SNAPSHOT JBang 1/1 Running 5s 2 0 0 0s/0s/-
camel get
PID NAME CAMEL PLATFORM READY STATUS AGE TOTAL FAILED INFLIGHT SINCE-LAST
61818 MyCamel 3.20.1-SNAPSHOT Spring Boot v2.7.3 1/1 Running 28m34s 854 0 0 0s/0s/-
63051 test1 3.20.1-SNAPSHOT JBang 1/1 Running 18s 14 0 0 0s/0s/-
63068 mygroovy 3.20.1-SNAPSHOT JBang 1/1 Running 5s 2 0 0 0s/0s/-
camel get コマンドは、デフォルトのインテグレーションを表示します。これは、camel get integrations コマンドまたは camel get int コマンドの入力と同じです。
これにより、すべての Camel インテグレーションに関する全体的な情報が表示されます。ここでは、処理されたメッセージの合計数を確認できます。列 Since Last は、3 つのステージ (started/completed/failed) の最後の処理済みメッセージの前に時間を示します。
0s/ 0s/- の値は、最後に開始および完了したメッセージが発生したこと (0 秒前)、および失敗したメッセージがまだないことを意味します。この例では、9s/9s/1h3m は、最後に開始および完了したメッセージが 9 秒前に、最後の失敗は 1 時間、3 分前であることを意味します。
camel get route を使用したすべてのローカル Camel インテグレーションから、すべてのルートのステータスを確認することもできます。
camel get route PID NAME ID FROM STATUS AGE TOTAL FAILED INFLIGHT MEAN MIN MAX SINCE-LAST 61818 MyCamel hello timer://hello?period=2000 Running 29m2s 870 0 0 0 0 14 0s/0s/- 63051 test1 java timer://java?period=1000 Running 46s 46 0 0 0 0 9 0s/0s/- 63068 mygroovy groovy timer://groovy?period=1000 Running 34s 34 0 0 0 0 5 0s/0s/-
camel get route
PID NAME ID FROM STATUS AGE TOTAL FAILED INFLIGHT MEAN MIN MAX SINCE-LAST
61818 MyCamel hello timer://hello?period=2000 Running 29m2s 870 0 0 0 0 14 0s/0s/-
63051 test1 java timer://java?period=1000 Running 46s 46 0 0 0 0 9 0s/0s/-
63068 mygroovy groovy timer://groovy?period=1000 Running 34s 34 0 0 0 0 5 0s/0s/-
camel get --help を使用して、利用可能なすべてのコマンドを表示します。
4.3.17.1. Camel インテグレーションの Top ステータス リンクのコピーリンクがクリップボードにコピーされました!
camel top コマンドは、実行中の Camel インテグレーションの使用率の統計値(最大使用率の低いメモリー)を取得するために使用されます。
camel top PID NAME JAVA CAMEL PLATFORM STATUS AGE HEAP NON-HEAP GC THREADS CLASSES 22104 chuck 11.0.13 3.20.1-SNAPSHOT JBang Running 2m10s 131/322/4294 MB 70/73 MB 17ms (6) 7/8 7456/7456 14242 MyCamel 11.0.13 3.20.1-SNAPSHOT Spring Boot v2.7.3 Running 33m40s 115/332/4294 MB 62/66 MB 37ms (6) 16/16 8428/8428 22116 bar 11.0.13 3.20.1-SNAPSHOT JBang Running 2m7s 33/268/4294 MB 54/58 MB 20ms (4) 7/8 6104/6104
camel top
PID NAME JAVA CAMEL PLATFORM STATUS AGE HEAP NON-HEAP GC THREADS CLASSES
22104 chuck 11.0.13 3.20.1-SNAPSHOT JBang Running 2m10s 131/322/4294 MB 70/73 MB 17ms (6) 7/8 7456/7456
14242 MyCamel 11.0.13 3.20.1-SNAPSHOT Spring Boot v2.7.3 Running 33m40s 115/332/4294 MB 62/66 MB 37ms (6) 16/16 8428/8428
22116 bar 11.0.13 3.20.1-SNAPSHOT JBang Running 2m7s 33/268/4294 MB 54/58 MB 20ms (4) 7/8 6104/6104
HEAP 列には、ヒープメモリー(used/committed/max) とヒープ以外 (used/committed) が表示されます。GC 列には、ガベージコレクション情報 (時間と合計実行数) が表示されます。CLASSES 列には、クラスの数 (ロード/合計) が表示されます。
また、すべてのローカル Camel と camel top route から、各ルートの最高パフォーマンスのルート (平均処理時間の最高から最低まで) を確認することもできます。
使用可能なすべてのコマンドを表示するには、camel top --help を使用します。
4.3.17.2. ルートの開始と停止 リンクのコピーリンクがクリップボードにコピーされました!
Camel cmd は、実行中の Camel インテグレーションでさまざまなコマンド (ルートを開始および停止するコマンドなど) を実行するために使用されます。
chuck インテグレーション内のすべてのルートを停止するには、次を実行します。
camel cmd stop-route chuck
camel cmd stop-route chuck
その後、chuck インテグレーションのステータスが Stopped に変更されます。
ルートを開始するには、次を実行します。
camel cmd start-route chuck
camel cmd start-route chuck
すべての Camel 統合の all ルートを停止するには、次のように --all フラグを使用します。
camel cmd stop-route --all
camel cmd stop-route --all
all ルートを開始するには、次を使用します。
camel cmd start-route --all
camel cmd start-route --all
コンマを使用して ID を区切ることにより、1 つ以上のルートを停止できます (例: Camel cmd start-route --id=route1,hello)。詳細は 、camel cmd start-route --help コマンドを使用してください。
4.3.17.3. ログレベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
実行中の Camel 統合の現在のログレベルは、次の方法で確認できます。
camel cmd logger PID NAME AGE LOGGER LEVEL 90857 bar 2m48s root INFO 91103 foo 20s root INFO
camel cmd logger
PID NAME AGE LOGGER LEVEL
90857 bar 2m48s root INFO
91103 foo 20s root INFO
ログレベルは実行時に変更できます。たとえば、foo のレベルを DEBUG に変更するには、次を実行します。
camel cmd logger --level=DEBUG foo
camel cmd logger --level=DEBUG foo
--all を使用すると、実行中のすべての統合のログレベルを変更できます。
4.3.17.4. サービスの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
一部の Camel インテグれションは、REST、SOAP-WS、または TCP プロトコルを使用したソケットレベルのサービスなど、クライアントが呼び出すことができるサービスをホストする場合があります。以下の例に示すように、利用可能なサービスをリストできます。
camel get service
PID NAME COMPONENT PROTOCOL SERVICE
1912 netty netty tcp tcp:localhost:4444
2023 greetings platform-http rest http://0.0.0.0:7777/camel/greetings/{name} (GET)
2023 greetings platform-http http http://0.0.0.0:7777/q/dev
camel get service
PID NAME COMPONENT PROTOCOL SERVICE
1912 netty netty tcp tcp:localhost:4444
2023 greetings platform-http rest http://0.0.0.0:7777/camel/greetings/{name} (GET)
2023 greetings platform-http http http://0.0.0.0:7777/q/dev
ここでは、2 つの Camel インテグレーションを確認できます。Netty インテグレーションは、ポート 4444 で利用可能な TCP サービスをホストします。他の Camel インテグレーションは、GET 経由でのみ呼び出すことができる REST サービスをホストします。3 番目のインテグレーションには、埋め込み Web コンソールが付属します (--console オプションで開始)。
サービスをリストに掲載するには、Camel コンポーネントが Camel Console を使用してサービスをアドバタイズできる必要があります。
4.3.17.4.1. サーキットブレーカーのリスト状態 リンクのコピーリンクがクリップボードにコピーされました!
Camel インテグレーションで Circuit Breaker (https://camel.apache.org/components/3.20.x/eips/circuitBreaker-eip.html) を使用する場合は、次のように Camel CLI でブレーカーのステータスを出力できます。
camel get circuit-breaker PID NAME COMPONENT ROUTE ID STATE PENDING SUCCESS FAIL REJECT 56033 mycb resilience4j route1 circuitBreaker1 HALF_OPEN 5 2 3 0
camel get circuit-breaker
PID NAME COMPONENT ROUTE ID STATE PENDING SUCCESS FAIL REJECT
56033 mycb resilience4j route1 circuitBreaker1 HALF_OPEN 5 2 3 0
ここでは、サーキットブレーカーの状態が half open、つまり障害が減少し始めた場合にブレーカーの状態が Closed に移行しようとしていることが分かります。
watch オプションを指定してコマンドを実行すると、最新の状態を表示できます (例: watch Camel getcircuit-breaker)。
4.3.18. パイプを使用したターミナルからのスクリプト作成 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI ファイルは、パイプとフィルターを使用したターミナルスクリプトに使用するスクリプトとして実行できます。
スクリプトが実行されるたびに、JVM が Camel で起動されます。これはそれほど高速なわけでも、メモリー使用量が少ないわけでもないため、たとえば、多くの Camel コンポーネントまたは Kamelet を使用して、異種の IT システムからデータをより簡単に送受信するためには、Camel CLI ターミナルスクリプトを使用してください。
これには、たとえば、以下の upper.yaml ファイルのように、ファイルの先頭に次の行を追加する必要があります。
これをスクリプトとして実行するには、ファイル実行権限を設定する必要があります。
chmod +x upper.yaml
chmod +x upper.yaml
次に、これをスクリプトとして実行できます。
echo "Hello\nWorld" | ./upper.yaml
echo "Hello\nWorld" | ./upper.yaml
これにより次の出力が出力されます。
HELLO WORLD
HELLO
WORLD
--logging=true を使用してログをオンにすると、.camel-jbang/camel-pipe.log ファイルにログが記録されます。ログファイルの名前は設定できません。
echo "Hello\nWorld" | ./upper.yaml --logging=true
echo "Hello\nWorld" | ./upper.yaml --logging=true
4.3.18.1. stream:in の line モードと raw モードでの使用 リンクのコピーリンクがクリップボードにコピーされました!
stream:in を使用して System in からデータを読み取る場合、Stream コンポーネント は、2 つのモードで動作します。
-
行モード (デフォルト) - 入力を単一行 (改行で区切られた) として読み取ります。メッセージ本文は
Stringです。 -
raw モード - ストリームの終わり までストリーム全体を読み取ります。メッセージ本文は
byte[]です。
デフォルトモードは、ストリームコンポーネントが歴史的にどのように作成されたかによるものです。したがって、raw モードを使用するには、stream:in?readLine=false を設定することを推奨します。
4.3.19. ローカル Kamelet の実行 リンクのコピーリンクがクリップボードにコピーされました!
Camel CLI を使用すると、GitHub で公開したり、jar にパッケージ化したりすることなく、ローカルの Kamelet を試すことができます。
camel run --local-kamelet-dir=/path/to/local/kamelets earthquake.yaml
camel run --local-kamelet-dir=/path/to/local/kamelets earthquake.yaml
kamelet がローカルファイルシステムからのものである場合、Camel CLI を --dev モードで実行すると、更新されていればライブリロードできます。
GitHub リポジトリー内のフォルダーを指定することもできます。以下に例を示します。
camel run --local-kamelet-dir=https://github.com/apache/camel-kamelets-examples/tree/main/custom-kamelets user.java
camel run --local-kamelet-dir=https://github.com/apache/camel-kamelets-examples/tree/main/custom-kamelets user.java
kamelet が GitHub からロードされた場合、ライブリロードはできません。
4.3.20. platform-http コンポーネントの使用 リンクのコピーリンクがクリップボードにコピーされました!
ルートが platform-http から開始すると、Camel CLI にはポート 8080 で実行されている VertX HTTP サーバーが自動的に組み込まれます。次の例は、server.yaml という名前のファイル内のルートを示しています。
- from:
uri: "platform-http:/hello"
steps:
- set-body:
constant: "Hello World"
- from:
uri: "platform-http:/hello"
steps:
- set-body:
constant: "Hello World"
この例は次のように実行できます。
camel run server.yaml
camel run server.yaml
次に、次のようにして HTTP サービスを呼び出します。
curl http://localhost:8080/hello
$ curl http://localhost:8080/hello
Hello World%
4.3.21. Java Bean とプロセッサーの使用 リンクのコピーリンクがクリップボードにコピーされました!
通常の Java ソースファイルを Camel ルートとともに含める基本サポートがあり、Camel CLI ランタイムに Java ソースをコンパイルさせます。これは、アプリケーションに必要な小さなユーティリティークラス、POJO、Camel プロセッサーを含めることができることを意味します。
Java ソースファイルではパッケージ名を使用できません。
4.3.22. Java クラスでの依存関係の注入 リンクのコピーリンクがクリップボードにコピーされました!
Camel-jbang を使用して Camel 統合を実行する場合、ランタイムは Camel-main ベースになります。これは、Spring Boot または Quarkus が利用できないことを意味します。ただし、Java クラスでのアノテーションベースの依存関係注入の使用はサポートされています。
4.3.22.1. Spring Boot 依存関係インジェクションの使用 リンクのコピーリンクがクリップボードにコピーされました!
次の Spring Boot アノテーションを使用できます。
-
クラスレベルで
@org.springframework.stereotype.Componentまたは@org.springframework.stereotype.Serviceを使用して、クラスのインスタンスを作成し、Registry に登録します。 -
@org.springframework.beans.factory.annotation.Autowiredを使用して、クラスフィールドに Bean を依存関係に注入します。@org.springframework.beans.factory.annotation.Qualifierを使用して Bean ID を指定できます。 -
@org.springframework.beans.factory.annotation.Value: プロパティープレースホルダー を注入します。(application.propertiesで定義されたプロパティーなど。) -
メソッドの
@org.springframework.context.annotation.Beanを呼び出して Bean を作成します。
4.3.23. デバッグ リンクのコピーリンクがクリップボードにコピーされました!
利用可能なデバッグには次の 2 種類があります。
-
Java debugging- Java コードのデバッグ (標準 Java) -
Camel route debugging- Camel ルートのデバッグ (Camel ツールプラグインが必要)
4.3.23.1. Java のデバッグ リンクのコピーリンクがクリップボードにコピーされました!
JBang が提供する --debug フラグを使用して、統合スクリプトをデバッグできます。ただし、JVM の起動時に Java デバッグを有効にするには、次のように、camel の代わりに jbang コマンドを使用します。
jbang --debug camel@apache/camel run hello.yaml Listening for transport dt_socket at address: 4004
jbang --debug camel@apache/camel run hello.yaml
Listening for transport dt_socket at address: 4004
ご覧のとおり、デフォルトのリスニングポートは 4004 ですが、JBang debugging で説明されているように設定できます。
これは標準の Java デバッグソケットです。その後、選択した IDE を使用できるようになります。Processor を追加して、(ルート定義の作成とは対照的に) ルートの実行中にヒットするブレークポイントを設定できます。
4.3.23.2. Camel ルートのデバッグ リンクのコピーリンクがクリップボードにコピーされました!
Camel ルートデバッガーはデフォルトで利用可能です (camel-debug コンポーネントはクラスパスに自動的に追加されます)。デフォルトでは、URL service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel で JMX を介してアクセスできます。その後、選択した統合開発環境 (IDE) を使用できるようになります。
4.3.24. ヘルスチェック リンクのコピーリンクがクリップボードにコピーされました!
ヘルスチェックのステータスには、次のように CLI から Camel CLI を使用してアクセスします。
camel get health PID NAME AGE ID RL STATE RATE SINCE MESSAGE 61005 mybind 8s camel/context R UP 2/2/- 1s/3s/-
camel get health
PID NAME AGE ID RL STATE RATE SINCE MESSAGE
61005 mybind 8s camel/context R UP 2/2/- 1s/3s/-
ここでは Camel が UP しているのがわかります。アプリケーションは 8 秒間実行されており、2 つのヘルスチェックが呼び出されています。
出力には、チェックの default レベルが次のように表示されます。
-
CamelContextヘルスチェック -
コンポーネント固有のヘルスチェック (
Camel-kafkaやCamel-awsなど) - カスタムヘルスチェック
-
UPではないチェック
RATE 列には、/ で区切られた 3 つの数字が表示されます。したがって、2/2/- は合計 2 つのチェック、2 つは成功し、失敗はなしということを意味します。最後の 2 つの列は、この数値が成功または失敗した連続チェックの数であるため、ヘルスチェックの状態が変化するとリセットされます。したがって、ヘルスチェックが失敗し始めると、数値は次のようになります。
camel get health PID NAME AGE ID RL STATE RATE SINCE MESSAGE 61005 mybind 3m2s camel/context R UP 77/-/3 1s/-/17s some kind of error
camel get health
PID NAME AGE ID RL STATE RATE SINCE MESSAGE
61005 mybind 3m2s camel/context R UP 77/-/3 1s/-/17s some kind of error
ここでは、数値が 77/-/3 に変更されていることがわかります。つまり、チェックの合計数は 77 になります。成功はありませんが、チェックは 3 回連続で失敗しています。SINCE 列は RATE に対応します。したがって、この場合、最後のチェックは 1 秒前であり、チェックは 17 秒連続で失敗していることがわかります。
--level=full を使用すると、コンシューマーおよびルートレベルのチェックも含むすべてのヘルスチェックを出力できます。
ヘルスチェックは、--trace フラグを使用して表示できる例外が出力されたために失敗することがよくあります。
ここでは、無効な設定 (Invalid url in bootstrap.servers: value) による org.apache.kafka.common.config.ConfigException が原因でヘルスチェックが失敗していることがわかります。
さまざまなオプションをすべて表示するには、camel get health --help を使用します。