21장. Avro DataFormat


Camel 버전 2.14에서 사용 가능

이 구성 요소는 Apache Avro의 바이너리 데이터 포맷을 사용하여 메시지를 직렬화 및 역직렬화할 수 있는 avro에 대한 dataformat을 제공합니다. 또한 netty 또는 http를 통한 avro 사용을 위해 생산자 및 소비자 엔드포인트를 제공하여 Apache Avro의 rpc에 대한 지원을 제공합니다.

Maven 사용자는 이 구성 요소에 대해 pom.xml 에 다음 종속성을 추가해야 합니다.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-avro</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

21.1. Apache Avro 개요

Avro를 사용하면 포맷과 같은 json을 사용하여 메시지 유형 및 프로토콜을 정의한 다음 지정된 유형 및 메시지에 대한 java 코드를 생성할 수 있습니다. 스키마의 예는 다음과 같습니다.

{"namespace": "org.apache.camel.avro.generated",
 "protocol": "KeyValueProtocol",

 "types": [
     {"name": "Key", "type": "record",
      "fields": [
          {"name": "key",   "type": "string"}
      ]
     },
     {"name": "Value", "type": "record",
      "fields": [
          {"name": "value",   "type": "string"}
      ]
     }
 ],

 "messages": {
     "put": {
         "request": [{"name": "key", "type": "Key"}, {"name": "value", "type": "Value"} ],
         "response": "null"
     },
     "get": {
         "request": [{"name": "key", "type": "Key"}],
         "response": "Value"
     }
 }
}

maven, ant 등을 사용하여 스키마에서 클래스를 쉽게 생성할 수 있습니다. 자세한 내용은 Apache Avro 문서에서 확인할 수 있습니다.

그러나 스키마를 먼저 적용하지 않고 기존 클래스에 대한 스키마를 생성할 수 있습니다. 2.12 에서는 기존 프로토콜 인터페이스를 사용하여 RCP 호출을 수행할 수 있습니다. 프로토콜 자체에 인터페이스를 사용해야 하며 매개 변수 및 결과 유형에 대해 interface를 사용해야 합니다. 다음은 위의 스키마에 해당하는 클래스의 예입니다.

package org.apache.camel.avro.reflection;

public interface KeyValueProtocol {
    void put(String key, Value value);
    Value get(String key);
}

class Value {
    private String value;
    public String getValue() { return value; }
    public void setValue(String value) { this.value = value; }
}

참고: 기존 클래스는 데이터 형식이 아닌 RPC에만 사용할 수 있습니다(아래 참조).

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.