1.3. 연결 내의 데이터에 작업 적용


Kamelet과 이벤트 채널 간에 전달되는 데이터에 대해 작업을 수행하려면 Kamelet Binding 내의 중간 단계로 action Kamelets를 사용합니다. 예를 들어 작업 Kamelet을 사용하여 데이터를 직렬화 또는 역직렬화하거나, 데이터를 필터링하거나, 필드 또는 메시지 헤더를 삽입할 수 있습니다.

필드 필터링 또는 추가와 같은 조작 작업은 JSON 데이터(즉, Content-Type 헤더가 application/json)로 설정된 경우에만 작동합니다. 이벤트 데이터가 JSON 이외의 포맷(예: Avro 또는 Protocol Buffers)을 사용하는 경우, 조작 작업과 직렬화 단계(예: 조작 작업 및 serialize 단계) 전에 역직렬 단계(예: protobuf-deserialize-action 또는 avro-deserialize-action Kamelet)를 추가하여 데이터 형식을 변환해야 합니다. 이는 protobuf-serialize-action 또는 avro-serialize-action Kamelet을 참조합니다. 연결에서 데이터 형식을 변환하는 방법에 대한 자세한 내용은 Kamelets 데이터 변환을 참조하십시오.

action Kamelets는 다음과 같습니다.

1.3.1. Kamelet Binding에 작업 추가

작업 Kamelet을 구현하려면 Kamelet 바인딩 파일의 spec 섹션에서 소스 및 싱크 섹션 사이에 steps 섹션을 추가합니다.

사전 요구 사항

  • Kamelet Binding의 소스 및 싱크 구성 요소에 설명된 대로 Kamelet Binding을 생성했습니다.
  • Kamelet Binding에 추가할 작업 Kamelet 및 action Kamelet의 필수 매개 변수를 알고 있습니다.

    이 절차의 예제에서는 predicate-filter-action Kamelet에 대한 매개 변수는 문자열 유형, 표현식입니다. 이 매개 변수는 Coffee로만 Coffee로 필터링하는 JSON Path Expression을 제공합니다. predicate-filter-action Kamelet에는 Kamelet Binding에서 Builder trait 구성 속성을 설정해야 합니다.

    예제에는 이벤트 데이터 형식이 JSON이기 때문에 이 경우 선택 사항인 deserialize 및 serialize 작업도 포함됩니다.

절차

  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
    Copy to Clipboard Toggle word wrap
  2. source 섹션 위에 통합 섹션을 추가하고 predicate-filter-action Kamelet에서 요구하는 대로 다음 Builder trait configuration 속성을 제공합니다.

    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
    Copy to Clipboard Toggle word wrap
  3. sourcesink 섹션 사이에 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
    Copy to Clipboard Toggle word wrap
  4. 변경 사항을 저장하십시오.
  5. oc apply 명령을 사용하여 KameletBinding 리소스를 업데이트합니다. 예를 들면 다음과 같습니다.

    oc apply -f coffee-to-log.yaml

    Camel K Operator는 업데이트된 KameletBinding 리소스를 기반으로 생성하는 CamelK 통합을 다시 생성하고 실행합니다.

  6. Kamelet Binding의 상태를 보려면 다음을 수행합니다.

    oc get kameletbindings

  7. 해당 통합의 상태를 확인하려면 다음을 수행합니다.

    oc get integrations

  8. 통합 로그 파일 출력을 보려면 다음을 수행합니다.

    kamel logs <integration-name>

    예를 들어 통합 이름이 coffee-to-log 인 경우 다음을 수행합니다.

    Kamel 로그 coffee-to-log

  9. 통합을 중지하려면 Kamelet Binding을 삭제합니다.

    oc delete kameletbindings/<kameletbinding-name>

    예를 들면 다음과 같습니다.

    oc delete kameletbindings/coffee-to-log

1.3.2. 작업 kamelets

1.3.2.1. Kamelets를 필터링하는 데이터

예를 들어 민감한 데이터가 유출되지 않거나 불필요한 네트워킹 요금이 발생하지 않도록 소스와 싱크 구성 요소 간에 전달되는 데이터를 필터링할 수 있습니다.

다음 기준에 따라 데이터를 필터링할 수 있습니다.

  • Kafka 주제 이름 - Topic Name Matches Filter Action Kamelet (topic-name-matches-filter-action)을 구성하여 지정된 Java 정규식과 일치하는 이름으로 Kafka 항목에 대한 이벤트를 필터링합니다. 자세한 내용은 특정 Kafka 항목에 대한 이벤트 데이터 필터링을 참조하십시오.
  • header key - Header Filter Action Kamelet (has-header-filter-action)을 구성하여 지정된 메시지 헤더가 있는 이벤트를 필터링합니다.
  • null - Tombstone Filter Action Kamelet (is-tombstone-filter-action)을 구성하여 Tombstone Filter Action(필터가 null 페이로드로 이벤트)을 필터링합니다.
  • 서술자 - Predicate Filter Action Kamelet(predicate-filter-action)을 구성하여 지정된 JSON 경로 표현식을 기반으로 이벤트를 필터링합니다. predicate-filter-action Kamelet을 사용하려면 Kamelet Binding에서 다음 Builder trait 구성 속성을 설정해야 합니다.

    spec:
      integration:
        traits:
          builder:
            configuration:
              properties:
               - "quarkus.arc.unremovable-types=com.fasterxml.
                    jackson.databind.ObjectMapper"
    Copy to Clipboard Toggle word wrap
참고

Kamelets를 필터링하는 데이터는 JSON 데이터(즉, Content-Type 헤더가 application/json으로 설정된 경우)와 함께 작동합니다. 이벤트 데이터가 JSON 이외의 포맷을 사용하는 경우, 이후 조작 동작 및 serialize 단계(예: protobuf-serialize-action 또는 avro-deserialize-action)를 추가하기 전에 역직렬 단계(예: protobuf-de serialize-action )를 추가하여 데이터 형식을 변환해야 합니다. 연결에서 데이터 형식을 변환하는 방법에 대한 자세한 내용은 Kamelets 데이터 변환을 참조하십시오.

1.3.2.2. 데이터 변환 Kamelets

다음 데이터 변환 Kamelets를 사용하면 소스 및 싱크 구성 요소 간에 전달되는 데이터의 형식을 직렬화 및 역직렬화할 수 있습니다. 데이터 변환은 이벤트 데이터의 페이로드에 적용됩니다(키 또는 헤더가 아님).

  • Avro - Apache 10.0.0.1에 대한 데이터 직렬화 및 데이터 교환 서비스를 제공하는 오픈 소스 프로젝트입니다.

    • Avro Deserialize Action Kamelet (avro-deserialize-action)
    • Avro Serialize Action Kamelet (avro-serialize-action)
  • 프로토콜 버퍼 - 내부적으로 이를 사용하는 Google이 내부 네트워크 서비스와 통신할 수 있도록 실험한 고성능의 컴팩트한 바이너리 전선 형식입니다.

    • Protobuf Deserialize Action Kamelet (protobuf-deserialize-action)
    • protobuf Serialize Action Kamelet (protobuf-serialize-action)
  • JSON (JavaScript Object Notation) - JavaScript 프로그래밍 언어의 하위 집합을 기반으로 하는 데이터 교환 형식입니다. JSON은 완전히 독립적 인 텍스트 형식입니다.

    • JSON Deserialize Action Kamelet (json-deserialize-action)
    • JSON Serialize Action Kamelet (json-serialize-action)
참고

Avro 및 Protobuf serialize/deserialize Kamelets에서 스키마(단일 줄로 JSON 형식을 사용하여)를 지정해야 합니다. JSON serialize/deserialize Kamelets의 경우 이를 수행할 필요가 없습니다.

1.3.2.3. 데이터 변환 Kamelets

다음 데이터 변환 Kamelets를 사용하면 소스 및 싱크 구성 요소 간에 전달되는 데이터에 대해 간단한 조작을 수행할 수 있습니다.

  • extract Field - extract-field-action Kamelet을 사용하여 데이터 본문에서 필드를 가져오고 전체 데이터 본문을 추출된 필드로 교체합니다.
  • Hoist Field - Hoist-field-action Kamelet을 사용하여 데이터 본문을 단일 필드로 래핑합니다.
  • insert Header - insert-header-action Kamelet을 사용하여 정적 데이터 또는 레코드 메타데이터를 사용하여 헤더 필드를 추가합니다.
  • insert Field - insert-field-action Kamelet을 사용하여 정적 데이터 또는 레코드 메타데이터를 사용하여 필드 값을 추가합니다.
  • mask 필드 - mask-field-action Kamelet을 사용하여 필드 값을 필드 유형(예: 0 또는 빈 문자열)에 대해 유효한 null 값으로 바꾸거나 지정된 대체값(개체는 비어 있지 않은 문자열 또는 숫자 값이어야 함)으로 바꿉니다.

    예를 들어 Kafka로 전송하기 위해 관련 데이터베이스에서 데이터를 캡처하고 데이터가 보호되는 (Payment / PII) 정보가 포함된 경우 Kafka 클러스터가 아직 인증되지 않은 경우 보호되는 정보를 마스킹해야 합니다.

  • Replace Field - replace-field-action Kamelet을 사용하여 필드를 필터링하거나 이름을 변경합니다. 이름 변경, 비활성화(포함) 또는 활성화(포함)할 필드를 지정할 수 있습니다.
  • Value To Key - (for Kafka) value-to-key-action Kamelet을 사용하여 레코드 키를 페이로드의 필드 하위 집합에서 형성된 새 키로 교체합니다. 데이터를 Kafka에 쓰기 전에 이벤트 정보를 기반으로 하는 값으로 이벤트 키를 설정할 수 있습니다. 예를 들어 데이터베이스 테이블에서 레코드를 읽을 때 고객 ID를 기반으로 Kafka의 레코드를 분할할 수 있습니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동