1.3. コネクション内のデータへの操作の適用


kamelet とイベントチャネル間で渡されるデータで操作を実行する場合は、kamelet バインディング内の中間ステップとして、アクション kamelets を使用します。たとえば、action kamelet を使用してデータをシリアライズまたはデシリアライズしたり、データをフィルターしたり、フィールドやメッセージヘッダーを挿入したりできます。

アクション kamelets には以下が含まれます。

1.3.1. kamelet バインディングへの操作の追加

アクション kamelet を実装するには、kamelet バインディングファイルの spec セクションで、ソースセクションとシンクセクションの間に steps セクションを追加します。

前提条件

  • 「Connecting to an event channel」の説明どおりに kamelet バインディングを作成している。
  • kamelet バインディングに追加するアクション kamelet とアクション kamelet の必須パラメーターを把握している必要があります。

    この手順の例では、predicate-filter-action kamelet のパラメーターは string タイプの式で、コーヒーデータをフィルターして "deep" taste intensity を持つコーヒーだけをログに記録するための JSON パス式を提供します。フィールドのフィルタリングや追加などの操作は、JSON データ (つまり、Content-Type ヘッダーが application/json に設定されている場合) でのみ機能することに注意してください。predicate-filter-action kamelet では、kamelet バインディングに Builder トレイト設定プロパティーを設定する必要があります。

    この例には、イベントデータフォーマットが JSON であるため、この場合はオプションのデシリアライズおよびシリアライズアクションも含まれます。イベントデータが JSON 以外の形式 (Avro または Protocol Buffers など) を使用する場合は、操作アクションおよびその後のシリアライズステップ (例: protobuf-serialize-action または avro-serialize-action kamelet を参照する) の前にデシリアライズステップ (例: protobuf-deserialize-action または avro-deserialize-action kamelet を参照する) を追加して、データの形式を変換する必要があります。

    コネクションのデータ形式を変換する方法は、「データ変換 kamelets」を参照してください。

手順

  1. エディターで KameletBinding ファイルを開きます。

    たとえば、coffee-to-log.yaml ファイルの内容を以下に示します。

    apiVersion: camel.apache.org/v1alpha1
    kind: KameletBinding
    metadata:
      name: coffee-to-log
    spec:
      source:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: coffee-source
        properties:
          period: 5000
      sink:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: log-sink
  2. source セクションの上に integration セクションを追加し、(predicate-filter-action kamelet で必要とされるように) 以下の Builder トレイト設定プロパティーを指定します。

    apiVersion: camel.apache.org/v1alpha1
    kind: KameletBinding
    metadata:
      name: coffee-to-log
    spec:
      integration: traits: builder: configuration: properties: - "quarkus.arc.unremovable-types=com.fasterxml. jackson.databind.ObjectMapper"
      source:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: coffee-source
        properties:
          period: 5000
      sink:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: log-sink
  3. source セクションと sink セクションの間に steps セクションを追加し、アクション kamelet を定義します。以下に例を示します。

    apiVersion: camel.apache.org/v1alpha1
    kind: KameletBinding
    metadata:
      name: coffee-to-log
      spec:
        integration:
               traits:
                 builder:
                   configuration:
                     properties:
                       - "quarkus.arc.unremovable-types=com.fasterxml.
                             jackson.databind.ObjectMapper"
      source:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: coffee-source
        properties:
          period: 5000
      steps: - ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: json-deserialize-action - ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: predicate-filter-action properties: expression: "@.intensifier =~ /.*deep/" - ref: kind: Kamelet apiVersion: camel.apache.org/v1alpha1 name: json-serialize-action
      sink:
        ref:
          kind: Kamelet
          apiVersion: camel.apache.org/v1alpha1
          name: log-sink
  4. 変更を保存します。
  5. KameletBinding リソースを更新します。

    oc apply -f coffee-to-log.yaml

    Camel K Operator は、更新された KameletBinding リソースを基に生成する Camel K インテグレーションを再生成し、実行します。

  6. kamelet binding のステータスを表示するには、次のコマンドを実行します。

    oc get kameletbindings

  7. 対応するインテグレーションのステータスを表示するには、次のコマンドを実行します。

    oc get integrations

  8. ログファイルの出力を表示するには、以下を実行します。

    1. インテグレーションの Pod 名を取得します。

      oc get pods

    2. インテグレーションの Pod のログを表示します。

      oc logs <podname of the integration>

      たとえば、Pod 名が example-7885bdb9-84ht8 の場合、以下のコマンドを実行します。

      oc logs example-7885bdb9-84ht8

  9. インテグレーションを停止するには、kamelet バインディングを削除します。

    oc delete kameletbindings/<kameletbinding-name>

    以下に例を示します。

    oc delete kameletbindings/coffee-to-log

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.