レッドハットのソリューションアーキテクトの森です。
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 に関して興味がある・もう少し詳しい内容が聞きたい、などありましたら、是非弊社までお問合せ頂ければと思います。