5.5. Service Registry Maven プラグインを使用したアーティファクト参照の自動追加
一部の Service Registry アーティファクトタイプには、別のアーティファクトファイルへの アーティファクト参照 を含めることができます。再利用可能なスキーマまたは API アーティファクトを定義し、アーティファクト参照の複数の場所からそれらを参照することで、効率を高めることができます。
次のアーティファクトタイプはアーティファクト参照をサポートしています。
- Apache Avro
- Google Protobuf
- JSON スキーマ
- OpenAPI
- AsyncAPI
単一のアーティファクトを指定し、Service Registry Maven プラグインを設定して、同じディレクトリーにあるアーティファクトへのすべての参照を自動的に検出し、これらの参照を自動的に登録できます。これはテクノロジープレビューの機能です。
テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
このセクションでは、Maven プラグインを使用して Avro スキーマを登録し、単純なスキーマアーティファクトへのアーティファクト参照を自動的に検出して登録する簡単な例を紹介します。この例では、親 TradeKey
アーティファクトとネストされた Exchange
スキーマアーティファクトの両方が、同じディレクトリーで利用可能であることを前提としています。
Exchange スキーマへのネストされた参照を含む 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
スキーマアーティファクトとネストされたExchange
スキーマアーティファクトファイルは両方とも、同じディレクトリーにあります。
手順
apicurio-registry-maven-plugin
を使用してTradeKey
スキーマを登録するように Mavenpom.xml
ファイルを更新します。これには、次のようにExchange
スキーマへのネストされた参照が含まれます。<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
を実行ゴールとして指定し、スキーマアーティファクトを Service Registry にアップロードします。- 2
../apis/registry/v2
エンドポイントを使用して Service Registry URL を指定します。- 3
- 認証が必要な場合は、認証サーバーおよびクライアントの認証情報を指定できます。
- 4
- 参照を含む親アーティファクトグループ ID を指定します。一意のグループ ID を使用しない場合は、
default
のグループを指定できます。 - 5
- 親アーティファクトファイルの場所を指定します。参照されるアーティファクトはすべて、同じディレクトリーに置く必要があります。
- 6
<autoRefs>
オプションを true に設定すると、同じディレクトリー内のアーティファクトへのすべての参照が自動的に検出されて登録されます。この方法で、複数のアーティファクト参照を登録できます。
-
たとえば、
mvn package
コマンドを使用して、Maven プロジェクトをビルドします。
関連情報
- Apache Maven の使用に関する詳細は、Apache Maven のドキュメント を参照してください。
- Service Registry Maven プラグインを使用して複数のアーティファクト参照を自動的に登録するオープンソースの例については、avro-maven-with-references-auto demonstration example を参照してください。
- アーティファクト参照のその他の例は、8章Java クライアントでの Kafka シリアライザー/デシリアライザーの設定 の各アーティファクトタイプの設定に関するセクションを参照してください。