Azure Schema Registry Avro Serializer-Clientbibliothek für JavaScript – Version 1.1.0
Azure Schema Registry ist ein von Azure Event Hubs gehosteter Schemarepositorydienst, der Schemaspeicher, Versionsverwaltung und -verwaltung bereitstellt. Dieses Paket bietet einen Avro-Serialisierer, der Nutzlasten mit avro-serialisierten Daten serialisieren und deserialisieren kann.
Wichtige Links:
Erste Schritte
Voraussetzungen
- Ein Azure-Abonnement
- Eine vorhandene Schemaregistrierungsressource
Installieren Sie das Paket @azure/schema-registry-avro
.
Installieren Sie die Azure Textanalyse-Clientbibliothek für JavaScript mit npm
:
npm install @azure/schema-registry-avro
Wichtige Begriffe
AvroSerializer
Stellt eine API zum Serialisieren und Deserialisieren von Avro Binary Encoding in einer Nachricht mit einem Inhaltstypfeld mit der Schema-ID bereit. Verwendet SchemaRegistryClient
aus dem paket @azure/schema-registry, um Schema-IDs aus der Schemadefinition abzurufen oder umgekehrt. Die bereitgestellte API verfügt über einen internen Cache, um den Aufruf des Schemaregistrierungsdiensts nach Möglichkeit zu vermeiden.
Nachrichten
Standardmäßig erstellt das Serialisierungsprogramm Nachrichten, die wie folgt strukturiert sind:
data
: ein Bytearray, das Daten in der Binären Avro-Codierung enthält. Beachten Sie, dass es SICH NICHT um eine Avro-Objektcontainerdatei handelt. Letzteres schließt das Schema ein, und das Erstellen dieses Schemas verfehlt den Zweck der Verwendung dieses Serialisierers, um das Schema aus der Nachrichtennutzlast in die Schemaregistrierung zu verschieben.contentType
: Eine Zeichenfolge im folgenden Formatavro/binary+<Schema ID>
, bei der dasavro/binary
Teil signalisiert, dass diese Nachricht über eine avro-serialisierte Nutzlast verfügt und das<Schema Id>
Teil die Schema-ID ist, die der Schemaregistrierungsdienst dem Schema zugewiesen ist, das zum Serialisieren dieser Nutzlast verwendet wird.
Nicht alle Messagingdienste unterstützen dieselbe Nachrichtenstruktur. Um die Integration mit solchen Diensten zu ermöglichen, kann das Serialisierer auf benutzerdefinierte Nachrichtenstrukturen reagieren, indem die messageAdapter
Option im Konstruktor mit einem entsprechenden Nachrichtenproduzenten und Consumer festgelegt wird. Azure Messaging-Clientbibliotheken exportieren Standardadapter für ihre Nachrichtentypen.
Beispiele
Serialisieren und Deserialisieren von ' @azure/event-hubs
s EventData
const { DefaultAzureCredential } = require("@azure/identity");
const { createEventDataAdapter } = require("@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);
Problembehandlung
Der Avro-Serialisierer kommuniziert bei Bedarf mit dem Schemaregistrierungsdienst , um Schemas zu registrieren oder abzufragen, und diese Dienstaufrufe können einen RestError auslösen. Darüber hinaus werden Fehler vom Typ Error
ausgelöst, wenn die Serialisierung oder Deserialisierung fehlschlägt. Die cause
-Eigenschaft enthält den zugrunde liegenden Fehler, der aus der Avro-Implementierungsbibliothek ausgelöst wurde.
Protokollierung
Die Aktivierung der Protokollierung kann hilfreiche Informationen über Fehler aufdecken. Um ein Protokoll von HTTP-Anforderungen und -Antworten anzuzeigen, legen Sie die Umgebungsvariable AZURE_LOG_LEVEL
auf info
fest. Alternativ kann die Protokollierung zur Laufzeit aktiviert werden, indem Sie setLogLevel
in @azure/logger
aufrufen:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Nächste Schritte
Ausführliche Beispiele zur Verwendung dieser Bibliothek finden Sie im Beispielverzeichnis .
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Wenn Sie an dieser Bibliothek mitwirken möchten, lesen Sie die Anleitung für Mitwirkende, um mehr darüber zu erfahren, wie Sie den Code erstellen und testen können.
Verwandte Projekte
Azure SDK for JavaScript