Delen via


Azure Schema Registry Avro Serializer-clientbibliotheek voor JavaScript - versie 1.0.0

Azure Schema Registry is een service voor schemaopslagplaats die wordt gehost door Azure Event Hubs en die schema-opslag, versiebeheer en beheer biedt. Dit pakket biedt een Avro-serialisatiefunctie die nettoladingen met Avro-geserialiseerde gegevens kan serialiseren en deserialiseren.

Belangrijke koppelingen:

Aan de slag

Vereisten

Installeer het pakket @azure/schema-registry-avro

Installeer de Azure Text Analytics-clientbibliotheek voor JavaScript met npm:

npm install @azure/schema-registry-avro

Belangrijkste concepten

AvroSerializer

Biedt EEN API voor serialisatie en deserialisatie van Binaire Avro-codering die is verpakt in een bericht met een inhoudstypeveld dat de schema-id bevat. Maakt gebruik SchemaRegistryClient van het pakket @azure/schemaregister om schema-id's op te halen uit de schemadefinitie of omgekeerd. De opgegeven API heeft een interne cache om te voorkomen dat de schemaregisterservice zo mogelijk wordt aangeroepen.

Berichten

Standaard maakt de serializer berichten die als volgt zijn gestructureerd:

  • data: een bytematrix met gegevens in de binaire avro-codering. Houd er rekening mee dat het GEEN Avro-objectcontainerbestand is. Dit laatste omvat het schema en het maken ervan heeft geen zin om deze serializer te gebruiken om het schema uit de nettolading van het bericht naar het schemaregister te verplaatsen.

  • contentType: een tekenreeks van de volgende indeling avro/binary+<Schema ID> waarbij het avro/binary onderdeel aangeeft dat dit bericht een avro-geserialiseerde nettolading heeft en het <Schema Id> deel de schema-id is die de Schema Registry-service is toegewezen aan het schema dat wordt gebruikt om deze nettolading te serialiseren.

Niet alle berichtenservices ondersteunen dezelfde berichtstructuur. Om integratie met dergelijke services mogelijk te maken, kan de serializer reageren op aangepaste berichtstructuren door de messageAdapter optie in de constructor in te stellen met een bijbehorende berichtproducent en -consument. Azure Messaging-clientbibliotheken exporteren standaardadapters voor hun berichttypen.

Voorbeelden

Serialiseren en deserialiseren van een @azure/event-hubs's 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);

Problemen oplossen

De Avro-serializer communiceert zo nodig met de schemaregisterservice om schema's te registreren of op te vragen. Deze service-aanroepen kunnen een RestError genereren. Bovendien worden er fouten van het type Error gegenereerd wanneer serialisatie of deserialisatie mislukt. De cause eigenschap bevat de onderliggende fout die is opgetreden vanuit de Avro-implementatiebibliotheek.

Logboekregistratie

Het inschakelen van logboekregistratie kan helpen bij het ontdekken van nuttige informatie over fouten. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de AZURE_LOG_LEVEL omgevingsvariabele in op info. Logboekregistratie kan ook worden ingeschakeld tijdens runtime door aan te roepen setLogLevel in de @azure/logger:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

Volgende stappen

Bekijk de map met voorbeelden voor gedetailleerde voorbeelden van het gebruik van deze bibliotheek.

Bijdragen

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar https://cla.microsoft.com voor meer informatie.

Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.

Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de handleiding voor bijdragen voor meer informatie over het bouwen en testen van de code.

Weergaven