以下の内容はhttps://rheb.hatenablog.com/entry/cac20251214より取得しました。


Camel kamelet

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

昨日ご紹介した route Template をベースに、各種 camel component をコネクターとして用意し、ユーザーはコネクターを並べてサービスを定義するという kamelet が開発されました。製品提供は終了しましたが、Openshift上のオペレーター(Camel-K Operator)を使いインテグレーションのライフサイクルを制御し、ブラウザー上の GUI を使いインテグレーションの作成やデプロイなどを管理する Fuse Onlineが登場した当時、ローコードのインテグレーションプラットフォームとして注目されました。

syndesis.io

製品提供は終了されましたが、各種製品要素は Red Hat Build of Apache Camel や後日紹介する kaotoや DataMapper に受け継がれています。

本番運用でのお問い合わせがグローバルの中でも多かった日本では、kamelet ベースの資産をお持ちであったり、route Template ではなく kamelet を使ったテンプレート方法を好まれる方がいらっしゃるかもしれません。そんな方々向けに Red Hat Build of Apache Camel では、camel-kamelet コンポーネントを使いそれら kamelet をご利用いただけます。

camel.apache.org

こちらのリポジトリーから、サンプルプロジェクト(Camel for SpringBoot)を確認してみましょう。

github.com

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 から学びたいという方は、こちらをご確認ください。

camel.apache.org

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の説明ページをご確認ください。

camel.apache.org

サンプルの実行方法については readme.adoc をご確認いただくとして、camel-kamelet により kameletを使ったテンプレートもご活用いただけるイメージがついたかと思います。

明日の advent calendar 15日目では、「deploy camel to k8s/OpenShift」 についてご紹介します。 アドベントカレンダーの一覧はこちらです。 qiita.com




以上の内容はhttps://rheb.hatenablog.com/entry/cac20251214より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14