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 スキーマアーティファクトファイルは両方とも、同じディレクトリーにあります。

手順

  1. apicurio-registry-maven-plugin を使用して TradeKey スキーマを登録するように Maven pom.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 に設定すると、同じディレクトリー内のアーティファクトへのすべての参照が自動的に検出されて登録されます。この方法で、複数のアーティファクト参照を登録できます。
  2. たとえば、mvn package コマンドを使用して、Maven プロジェクトをビルドします。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.