JavaScript 用 Azure Schema Registry Avro シリアライザー クライアント ライブラリ - バージョン 1.0.0
Azure Schema Registry は、スキーマ ストレージ、バージョン管理、管理を提供する、Azure Event Hubsによってホストされるスキーマ リポジトリ サービスです。 このパッケージは、Avro シリアル化されたデータを含むペイロードをシリアル化および逆シリアル化できる Avro シリアライザーを提供します。
主要リンク:
作業の開始
前提条件
@azure/schema-registry-avro
パッケージのインストール
を使用して、JavaScript 用の Azure Text Analytics クライアント ライブラリをnpm
インストールします。
npm install @azure/schema-registry-avro
主要な概念
AvroSerializer
スキーマ ID を含むコンテンツ タイプ フィールドを含むメッセージでラップされた Avro Binary Encoding にシリアル化および逆シリアル化する API を提供します。 @azure/schema-registry パッケージから を使用SchemaRegistryClient
して、スキーマ定義からスキーマ ID を取得するか、スキーマ定義からスキーマ ID を取得します。 提供された API には、可能な場合にスキーマ レジストリ サービスを呼び出さないようにするための内部キャッシュがあります。
メッセージ
既定では、シリアライザーは次のように構造化されたメッセージを作成します。
data
: Avro バイナリ エンコードのデータを含むバイト配列。 Avro オブジェクト コンテナー ファイルではないことに注意してください。 後者にはスキーマが含まれており、スキーマを作成すると、このシリアライザーを使用してスキーマをメッセージ ペイロードからスキーマ レジストリに移動する目的を破ります。contentType
: 次の形式avro/binary+<Schema ID>
avro/binary
の文字列。この部分は、このメッセージに Avro シリアル化されたペイロードがあることを通知し、<Schema Id>
部分は、このペイロードのシリアル化に使用されるスキーマに割り当てられたスキーマ レジストリ サービスのスキーマ ID です。
すべてのメッセージング サービスが同じメッセージ構造をサポートしているわけではありません。 このようなサービスとの統合を有効にするために、シリアライザーは、対応するメッセージ プロデューサーとコンシューマーを使用してコンストラクターの オプションを設定 messageAdapter
することで、カスタム メッセージ構造に対して動作できます。 Azure メッセージング クライアント ライブラリは、メッセージの種類の既定のアダプターをエクスポートします。
使用例
の をシリアル化および逆シリアル化する@azure/event-hubs
EventData
const { DefaultAzureCredential } = require("@azure/identity");
import { createEventDataAdapter } from "@azure/event-hubs";
const { SchemaRegistryClient } = require("@azure/schema-registry");
const { AvroSerializer } = require("@azure/schema-registry-avro");
const client = new SchemaRegistryClient(
"<fully qualified namespace>",
new DefaultAzureCredential()
);
const serializer = new AvroSerializer(client, {
groupName: "<group>",
messageAdapter: createEventDataAdapter(),
});
// Example Avro schema
const schema = JSON.stringify({
type: "record",
name: "Rating",
namespace: "my.example",
fields: [{ name: "score", type: "int" }],
});
// Example value that matches the Avro schema above
const value = { score: 42 };
// Serialize value to a message
const message = await serializer.serialize(value, schema);
// Deserialize a message to value
const deserializedValue = await serializer.deserialize(message);
トラブルシューティング
Avro シリアライザーは、スキーマを登録またはクエリするために必要に応じて スキーマ レジストリ サービスと通信し、それらのサービス呼び出しで RestError がスローされる可能性があります。 さらに、シリアル化または逆シリアル化に失敗すると、型 Error
のエラーがスローされます。 プロパティには cause
、Avro 実装ライブラリからスローされた基になるエラーが含まれます。
ログの記録
ログの記録を有効にすると、エラーに関する有用な情報を明らかにするのに役立つ場合があります。 HTTP 要求と応答のログを表示するには、環境変数 AZURE_LOG_LEVEL
を info
に設定します。 または、@azure/logger
で setLogLevel
を呼び出して、実行時にログ記録を有効にすることもできます。
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
次のステップ
このライブラリの使用方法の詳細な例については、 samples ディレクトリを参照してください。
共同作成
このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。
pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。
このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。
このライブラリに投稿する場合、コードをビルドしてテストする方法の詳細については、投稿ガイドを参照してください。