Apache Camel Advent Calendar 14日目の記事は、サポート担当古市が担当します。 テーマは、「Camel kamelet」

昨日ご紹介した route Template をベースに、各種 camel component をコネクターとして用意し、ユーザーはコネクターを並べてサービスを定義するという kamelet が開発されました。製品提供は終了しましたが、Openshift上のオペレーター(Camel-K Operator)を使いインテグレーションのライフサイクルを制御し、ブラウザー上の GUI を使いインテグレーションの作成やデプロイなどを管理する Fuse Onlineが登場した当時、ローコードのインテグレーションプラットフォームとして注目されました。
製品提供は終了されましたが、各種製品要素は Red Hat Build of Apache Camel や後日紹介する kaotoや DataMapper に受け継がれています。
本番運用でのお問い合わせがグローバルの中でも多かった日本では、kamelet ベースの資産をお持ちであったり、route Template ではなく kamelet を使ったテンプレート方法を好まれる方がいらっしゃるかもしれません。そんな方々向けに Red Hat Build of Apache Camel では、camel-kamelet コンポーネントを使いそれら kamelet をご利用いただけます。
こちらのリポジトリーから、サンプルプロジェクト(Camel for SpringBoot)を確認してみましょう。
pom.xml から、camel-kamelet コンポーネントへの依存を確認できます。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-kamelet-starter</artifactId>
</dependency>
yamlで定義された kamelet は kamelet-chucknorris/src/main/resources/kamelets/chuck-norris-source.kamelet.yaml で確認できます。
(kamelet は yamlで定義します。kaotoを使えば、GUIで編集することも可能です。)
kamelet を 1 から学びたいという方は、こちらをご確認ください。
chuck-norris-source.kamelet.yaml の template はこのような内容で定義されています。
template:
from:
uri: "timer:chuck"
parameters:
period: "{{period}}"
steps:
- to: "https://api.chucknorris.io/jokes/random"
- setBody:
jsonpath: "$.value"
- to: "kamelet:sink"
末尾の "kamelet:sink" が実行されると、camel-kamelet コンポーネントから実行された kamelet integrationの制御が camel-kamelet に戻ります。
camel-kamemelt エンドポイントを含む camel ルートはこちらに定義されています。
kamelet-chucknorris/src/main/java/sample/camel/MyRoute.java
from("kamelet:chuck-norris-source")
.delay(500)
.log("${body}");
consumer endpoint "kamelet:" に続く "chuck-norris-source" は、chuck-norris-source.kamelet.yaml に定義された名前です。
kind: Kamelet metadata: name: chuck-norris-source
プロパティ値 "period"が指定されていませんが、今回のサンプルではデフォルト値が適用されます。
properties:
period:
title: Period
description: The interval (msec) to wait before getting the next joke
type: integer
default: 10000
camel-kamelet エンドポイントでルートやテンプルレートのプロパティ設定も可能ですので、詳細については camel-kafka componentの説明ページをご確認ください。
サンプルの実行方法については readme.adoc をご確認いただくとして、camel-kamelet により kameletを使ったテンプレートもご活用いただけるイメージがついたかと思います。
明日の advent calendar 15日目では、「deploy camel to k8s/OpenShift」 についてご紹介します。 アドベントカレンダーの一覧はこちらです。 qiita.com