5.5. Service Registry Maven 플러그인을 사용하여 자동으로 아티팩트 참조 추가
일부 Service Registry 아티팩트 유형에는 한 아티팩트 파일에서 다른 아티팩트 파일로의 아티팩트 참조 가 포함될 수 있습니다. 재사용 가능한 스키마 또는 API 아티팩트를 정의한 다음 아티팩트 참조의 여러 위치에서 참조할 수 있습니다.
다음 아티팩트 유형은 아티팩트 참조를 지원합니다.
- Apache Avro
- Google Protobuf
- JSON 스키마
- OpenAPI
- AsyncAPI
단일 아티팩트를 지정하고 동일한 디렉터리에 있는 아티팩트에 대한 모든 참조를 자동으로 감지하고 해당 참조를 자동으로 등록하도록 Service Registry Maven 플러그인을 구성할 수 있습니다. 이는 기술 프리뷰 기능입니다.
기술 프리뷰 기능은 RedHat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. RedHat은 프로덕션 환경에서 사용하는 것을 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
RedHat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
이 섹션에서는 Maven 플러그인을 사용하여 Avro 스키마를 등록하고 아티팩트 참조를 간단한 스키마 아티팩트에 자동으로 탐지하고 등록하는 간단한 예를 보여줍니다. 이 예에서는 상위 tradeKey
아티팩트와 중첩된 교환
스키마 아티팩트가 모두 동일한 디렉터리에서 사용 가능한 것으로 가정합니다.
교환 스키마에 대한 중첩된 참조가 있는 tradeKey 스키마
{ "namespace": "com.kubetrade.schema.trade", "type": "record", "name": "TradeKey", "fields": [ { "name": "exchange", "type": "com.kubetrade.schema.common.Exchange" }, { "name": "key", "type": "string" } ] }
교환 스키마
{ "namespace": "com.kubetrade.schema.common", "type": "enum", "name": "Exchange", "symbols" : ["GEMINI"] }
사전 요구 사항
- 클라이언트 애플리케이션에 대한 Maven 프로젝트를 생성했습니다. 자세한 내용은 Apache Maven 설명서 를 참조하십시오.
-
tradeKey
스키마 아티팩트와 중첩된교환
스키마 아티팩트 파일은 둘 다 동일한 디렉터리에 있습니다.
프로세스
apicurio-registry-maven-plugin
을 사용하여 다음과 같이교환
스키마에 중첩된 참조가 포함된tradeKey
스키마를 등록하도록 Mavenpom.xml
파일을 업데이트합니다.<plugin> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-maven-plugin</artifactId> <version>${apicurio-registry.version}</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>register</goal> 1 </goals> <configuration> <registryUrl>MY-REGISTRY-URL/apis/registry/v2</registryUrl> 2 <authServerUrl>MY-AUTH-SERVER</authServerUrl> <clientId>MY-CLIENT-ID</clientId> <clientSecret>MY-CLIENT-SECRET</clientSecret> 3 <clientScope>MY-CLIENT-SCOPE</clientScope> <artifacts> <artifact> <groupId>test-group</groupId> 4 <artifactId>TradeKey</artifactId> <version>2.0</version> <type>AVRO</type> <file> ${project.basedir}/src/main/resources/schemas/TradeKey.avsc 5 </file> <ifExists>RETURN_OR_UPDATE</ifExists> <canonicalize>true</canonicalize> <autoRefs>true</autoRefs> 6 </artifact> </artifacts> </configuration> </execution> </executions> </plugin>
- 1
- 서비스 레지스트리에 스키마 아티팩트를 업로드하려면
register
를 실행 목표로 지정합니다. - 2
../apis/registry/v2
끝점을 사용하여 서비스 레지스트리 URL을 지정합니다.- 3
- 인증이 필요한 경우 인증 서버 및 클라이언트 자격 증명을 지정할 수 있습니다.
- 4
- 참조가 포함된 상위 아티팩트 그룹 ID를 지정합니다. 고유한 그룹 ID를 사용하지 않으려면
기본
그룹을 지정할 수 있습니다. - 5
- 상위 아티팩트 파일의 위치를 지정합니다. 참조된 모든 아티팩트도 동일한 디렉터리에 있어야 합니다.
- 6
- 동일한 디렉터리의 아티팩트에 대한 모든 참조를 자동으로 탐지하고 등록하려면 <
autoRefs
> 옵션을 true로 설정합니다. 이러한 방식으로 여러 아티팩트 참조를 등록할 수 있습니다.
-
예를 들어
mvn package
명령을 사용하여 Maven 프로젝트를 빌드합니다.
추가 리소스
- Apache Maven 사용에 대한 자세한 내용은 Apache Maven 설명서를 참조하십시오.
- Service Registry Maven 플러그인을 사용하여 여러 아티팩트 참조를 자동으로 등록하는 오픈 소스 예제는 avro-maven-with-references-auto 데모 예를 참조하십시오.
- 아티팩트 참조의 자세한 예는 8장. Java 클라이언트에서 Kafka serializers/deserializers 구성 에서 각 아티팩트 유형 구성 섹션을 참조하십시오.