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-actionkamelet のパラメーターはstringタイプの式で、コーヒーデータをフィルターして "deep" taste intensity を持つコーヒーだけをログに記録するための JSON パス式を提供します。フィールドのフィルタリングや追加などの操作は、JSON データ (つまり、Content-Typeヘッダーがapplication/jsonに設定されている場合) でのみ機能することに注意してください。predicate-filter-actionkamelet では、kamelet バインディングに Builder トレイト設定プロパティーを設定する必要があります。この例には、イベントデータフォーマットが JSON であるため、この場合はオプションのデシリアライズおよびシリアライズアクションも含まれます。イベントデータが JSON 以外の形式 (Avro または Protocol Buffers など) を使用する場合は、操作アクションおよびその後のシリアライズステップ (例:
protobuf-serialize-actionまたはavro-serialize-actionkamelet を参照する) の前にデシリアライズステップ (例:protobuf-deserialize-actionまたはavro-deserialize-actionkamelet を参照する) を追加して、データの形式を変換する必要があります。コネクションのデータ形式を変換する方法は、「データ変換 kamelets」を参照してください。
手順
エディターで
KameletBindingファイルを開きます。たとえば、
coffee-to-log.yamlファイルの内容を以下に示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sourceセクションの上にintegrationセクションを追加し、(predicate-filter-actionkamelet で必要とされるように) 以下の Builder トレイト設定プロパティーを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sourceセクションとsinkセクションの間にstepsセクションを追加し、アクション kamelet を定義します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存します。
KameletBindingリソースを更新します。oc apply -f coffee-to-log.yamlCamel K Operator は、更新された
KameletBindingリソースを基に生成する Camel K インテグレーションを再生成し、実行します。kamelet binding のステータスを表示するには、次のコマンドを実行します。
oc get kameletbindings対応するインテグレーションのステータスを表示するには、次のコマンドを実行します。
oc get integrationsログファイルの出力を表示するには、以下を実行します。
インテグレーションの Pod 名を取得します。
oc get podsインテグレーションの Pod のログを表示します。
oc logs <podname of the integration>たとえば、Pod 名が
example-7885bdb9-84ht8の場合、以下のコマンドを実行します。oc logs example-7885bdb9-84ht8
インテグレーションを停止するには、kamelet バインディングを削除します。
oc delete kameletbindings/<kameletbinding-name>以下に例を示します。
oc delete kameletbindings/coffee-to-log