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


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

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

예제

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 클래스를 생성하여 매핑에 대체 규칙을 사용할 수 있습니다.

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

서비스 레지스트리는 ArtifactReferenceResolverStrategy 구현을 기반으로 아티팩트에 대한 참조를 반환하는 다음 전략을 제공합니다.

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

DefaultSchemaResolver 인터페이스

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

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

레지스트리 조회 옵션 구성

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

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

apicurio.registry.find-latest

boolean

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

false

apicurio.registry.use-id

문자열

serializer에 지정된 ID를 Kafka에 작성하도록 지시하고 이 ID를 사용하여 스키마를 찾도록 역직렬화자에게 지시합니다.

없음

apicurio.registry.auto-register

boolean

serializer가 레지스트리에 아티팩트를 생성하려고 하는지 여부를 지정합니다. JSON 스키마 직렬화기에서는 이를 지원하지 않습니다.

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.