レッドハットのソリューションアーキテクトの森です。
Red Hat build of Apache Camel(旧 Red Hat Fuse)では、開発のためのツールをいくつかご用意しています。
今回は、効率よくプロトタイピングを行うことができる、Camel JBang (Camel CLI) についてご紹介をします。 Camel JBangを使用すると、シンプルなスクリプトファイルを使用してCamelルートを実行できます。

事前準備
以下のものをインストールしておきます。
- JBang
- Camel JBang (Camel CLI)
JBangのインストールについては、こちらを参照ください。
JBangがインストールされていれば、以下のコマンドで Camel JBang をインストールすることができます。
既にApache Camelを使用している方は、Camelと同じバージョンを指定してください。(ここでは 4.8.2 を指定しています)
jbang app install -Dcamel.jbang.version=4.8.2 camel@apache/camel
インストールが完了すると、camel version で JBang と Camel JBang のバージョンが確認できます。
- 出力例
% camel version JBang version: 0.122.0 Camel JBang version: 4.8.2
Camel JBang の主なコマンドについて
以下にCamel JBangの基本的なコマンドを示します。(私がよく使うもの)
| コマンド | 内容 |
|---|---|
| init | Camel の 基本的な ルート を作成する |
| run | 指定したCamelスクリプトファイルを実行 |
| version | インストールされているCamel JBangのバージョンを表示 |
| help | 使用可能なコマンドの一覧とその説明を表示 |
| export | CamelプロジェクトをMavenプロジェクトとしてエクスポート |
| transform route | CamelのDSLの形式変換(YAML ↔︎ XML) |
| ps | ローカルで実行している Camel を監視する |
| stop | ローカルで実行中の Camel を停止する |
| debug | Camel ルート のデバッグを行う |
その他のコマンドや詳細については、camel --help を確認するか、Camel JBang のドキュメントを確認してみてください。
Camel JBang を使ってみる
Camel ルート の作成と実行
camel init コマンドを使用して、新しい基本 ルート を作成できます。
ファイル形式は *.java、*.yaml、*.xml などが指定可能です。
例えば、YAML DSL形式の ルート を作成するには、以下のようにします。
camel init sample.yaml
サンプルルートを含むファイルを sample.yaml(現在のディレクトリに)作成します。

YAML DSL形式の ルート であれば、VSCodeの拡張機能として提供しているGUIエディタの Kaoto で編集をすることができます。
このサンプルルートは、以下のような動作を定義しています。
- Timerコンポーネントの使用:
from 句に Camel の Timer コンポーネントが設定されています。
これは、定期的にイベントを発生させることができます。
parameters セクションで period: "1000" が設定されており、これはタイマーが毎秒(1000ミリ秒)ごとにメッセージを生成することを意味します。
- 処理ステップの定義:
steps セクションでは、メッセージの生成とログへの出力が定義されています。
setBody: このステップでは、メッセージの本文を設定しています。ここでは "Hello Camel from ${routeId}" という文字列を使用しており、${routeId} はこのルートのIDに動的に置き換えられます。
log: 設定したメッセージ本文をログに出力しています。
${body} は現在のメッセージ本文を参照しており、これにより前の setBody で設定された文字列がログとして出力されます。
Camel ルート を Camel JBang で実行するには、次のコマンドを実行します。
camel run sample.yaml

Camel Quarkus, Camel Springboot へのエクスポート
camel export --runtime=quarkus コマンドは、現在のCamel JBangファイルを、Mavenベースの Quarkus プロジェクトにエクスポートします。
例えば、Maven の groupId: com.foo と artifactId: acme 及び、version: 1.0-SNAPSHOT で Quarkus にエクスポートするには、次のコマンドを実行します。
camel export <files> --runtime=quarkus --gav=com.foo:acme:1.0-SNAPSHOT --directory=./myproject
必要な依存関係などは pom.xml に含まれているので、Camel Quarkus としてすぐに動かすこともできます。
cd myproject mvn quarkus:dev

同様に、Spring Boot のプロジェクトにエクスポートする場合は、--runtime=spring-boot と指定してください。
camel export <files> --runtime=spring-boot --gav=com.foo:acme:1.0-SNAPSHOT --directory=./myproject
おわりに
いかがでしょうか?
Camel JBang を使うことで、Apache Camelのインテグレーションの開発がより効率よく行うことができるようになります。
次回は、Camel JBang の Kubernetes Plugin を使って、プロトタイプを OpenShift にデプロイする方法をご紹介します。
Red Hat build of Apache Camel に関して興味がある・もう少し詳しい内容が聞きたい、などありましたら、是非弊社までお問合せ頂ければと思います。