7.2. 서비스 레지스트리에서 스키마를 검색하는 전략


Kafka 클라이언트 직렬화기에서는 조회 전략을 사용하여 메시지 스키마가 서비스 레지스트리에 등록된 아티팩트 ID 및 글로벌 ID를 결정합니다. 지정된 주제 및 메시지에 대해 ArtifactReferenceResolverStrategy Java 인터페이스의 다양한 구현을 사용하여 레지스트리의 아티팩트에 대한 참조를 반환할 수 있습니다.

각 전략의 클래스는 io.apicurio.registry.serde.strategy 패키지에 있습니다. Avro SerDes에 대한 특정 전략 클래스는 io.apicurio.registry.serde.avro.strategy 패키지에 있습니다. 기본 전략은 TopicIdStrategy 이며, 메시지를 수신하는 Kafka 주제와 이름이 동일한 서비스 레지스트리 아티팩트를 찾습니다.

예제

public ArtifactReference artifactReference(String topic, boolean isKey, T schema) {
        return ArtifactReference.builder()
                .groupId(null)
                .artifactId(String.format("%s-%s", topic, isKey ? "key" : "value"))
                .build();

  • topic 매개변수는 메시지를 수신하는 Kafka 항목의 이름입니다.
  • 메시지 키가 직렬화될 때 isKey 매개변수는 true 이고, 메시지 값을 직렬화할 때 false 입니다.
  • schema 매개변수는 직렬화 또는 역직렬화된 메시지의 스키마입니다.
  • 반환된 ArtifactReference 에는 스키마가 등록된 아티팩트 ID가 포함됩니다.

사용하는 조회 전략은 스키마를 저장하는 방법과 위치에 따라 다릅니다. 예를 들어 동일한 Avro 메시지 유형의 Kafka 항목이 다른 경우 레코드 ID 를 사용하는 전략을 사용할 수 있습니다.

아티팩트 해석기 전략

아티팩트 확인자 전략은 Kafka 주제와 메시지 정보를 서비스 레지스트리의 아티팩트에 매핑하는 방법을 제공합니다. 매핑의 일반적인 규칙은 Kafka 메시지 또는 값에 대해 serializer가 사용되는지에 따라 Kafka 주제 이름과 키 또는 값을 결합하는 것입니다.

그러나 Service Registry에서 제공하는 전략을 사용하거나 io.apicurio.registry.serde.strategy.ArtifactReferenceResolverStrategy 를 구현하는 사용자 정의 Java 클래스를 생성하여 매핑에 대한 대체 규칙을 사용할 수 있습니다.

아티팩트에 대한 참조를 반환하는 전략

Service Registry는 ArtifactReferenceResolverStrategy 의 구현을 기반으로 아티팩트에 대한 참조를 반환하는 다음 전략을 제공합니다.

RecordIdStrategy
스키마의 전체 이름을 사용하는 Avro 특정 전략입니다.
TopicRecordIdStrategy
주제 이름과 스키마의 전체 이름을 사용하는 Avro 특정 전략.
TopicIdStrategy
주제 이름 및 또는 접미사를 사용하는 기본 전략입니다.
SimpleTopicIdStrategy
주제 이름만 사용하는 간단한 전략입니다.

DefaultSchemaResolver 인터페이스

기본 스키마 확인자는 아티팩트 확인자 전략에서 제공하는 아티팩트 참조에 등록된 특정 버전의 스키마를 찾아서 식별합니다. 모든 아티팩트 버전에는 해당 아티팩트의 콘텐츠를 검색하는 데 사용할 수 있는 전역적으로 고유한 단일 식별자가 있습니다. 이 글로벌 ID는 모든 Kafka 메시지에 포함되어 역직렬러가 Apicurio Registry에서 스키마를 올바르게 가져올 수 있습니다.

기본 스키마 확인자는 기존 아티팩트 버전을 조회하거나 사용하는 전략에 따라 찾을 수 없는 경우 등록할 수 있습니다. io.apicurio.registry.resolver.SchemaResolver 를 구현하는 사용자 정의 Java 클래스를 생성하여 자체 전략을 제공할 수도 있습니다. 그러나 DefaultSchemaResolver 를 사용하고 대신 구성 속성을 지정하는 것이 좋습니다.

레지스트리 조회 옵션 구성

DefaultSchemaResolver 를 사용하는 경우 애플리케이션 속성을 사용하여 동작을 구성할 수 있습니다. 다음 표에서는 일반적으로 사용되는 몇 가지 예를 보여줍니다.

표 7.1. 서비스 레지스트리 조회 구성 옵션
속성유형설명Default

apicurio.registry.find-latest

boolean

serializer가 해당 그룹 ID 및 아티팩트 ID의 레지스트리에서 최신 아티팩트를 찾는지 여부를 지정합니다.

false

apicurio.registry.use-id

문자열

직렬화기에서 Kafka에 지정된 ID를 쓰고 deserialize자에게 이 ID를 사용하여 스키마를 찾도록 지시합니다.

없음

apicurio.registry.auto-register

boolean

serializer가 레지스트리에 아티팩트를 만들 것인지 여부를 지정합니다. JSON Schema serializer에서 이 기능을 지원하지 않습니다.

false

apicurio.registry.check-period-ms

문자열

전역 ID를 밀리초 단위로 캐시하는 기간을 지정합니다. 구성되지 않은 경우 전역 ID를 매번 가져옵니다.

없음

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.