Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementazione C#
Nota
Prerequisiti: prima di completare i passaggi riportati di seguito, dovrai disporre di un cluster in esecuzione Amazon Streaming gestito per Apache Kafka (Amazon MSK) o Apache Kafka. I produttori e i consumatori devono essere in esecuzione su.NET 8.0 o versioni successive.
Installazione
Per le applicazioni C#, installa il SerDe NuGet pacchetto AWS Glue Schema Registry utilizzando uno dei seguenti metodi:
.NET CLI:
Usa il seguente comando per installare il pacchetto:
dotnet add package Aws.Glue.SchemaRegistry --version 1.0.0-<rid>
dove <rid> potrebbe essere1.0.0-linux-x64, 1.0.0-linux-musl-x64 oppure 1.0.0-linux-arm64
PackageReference (nel tuo file.csproj):
Aggiungi quanto segue al tuo file di progetto:
<PackageReference Include="Aws.Glue.SchemaRegistry" Version="1.0.0-<rid>" />
dove <rid> potrebbe essere1.0.0-linux-x64, 1.0.0-linux-musl-x64 oppure 1.0.0-linux-arm64
Configurazione del file di configurazione
Crea un file delle proprietà di configurazione (ad esempiogsr-config.properties) con le impostazioni richieste:
Configurazione minima:
Di seguito viene illustrato un esempio di configurazione minima:
region=us-east-1 registry.name=default-registry dataFormat=AVRO schemaAutoRegistrationEnabled=true
Utilizzo della libreria client C# Glue Schema per Kafka SerDes
Esempio di utilizzo del serializzatore:
L'esempio seguente mostra come utilizzare il serializzatore:
private static readonly string PROTOBUF_CONFIG_PATH = "<PATH_TO_CONFIG_FILE>"; var protobufSerializer = new GlueSchemaRegistryKafkaSerializer(PROTOBUF_CONFIG_PATH); var serialized = protobufSerializer.Serialize(message, message.Descriptor.FullName); // send serialized bytes to Kafka using producer.Produce(serialized)
Esempio di utilizzo del deserializzatore:
L'esempio seguente mostra come utilizzare il deserializzatore:
private static readonly string PROTOBUF_CONFIG_PATH = "<PATH_TO_CONFIG_FILE>"; var dataConfig = new GlueSchemaRegistryDataFormatConfiguration( new Dictionary<string, dynamic> { { GlueSchemaRegistryConstants.ProtobufMessageDescriptor, message.Descriptor } } ); var protobufDeserializer = new GlueSchemaRegistryKafkaDeserializer(PROTOBUF_CONFIG_PATH, dataConfig); // read message from Kafka using serialized = consumer.Consume() var deserializedObject = protobufDeserializer.Deserialize(message.Descriptor.FullName, serialized);
Utilizzo della libreria client C# Glue Schema con for KafkaFlow SerDes
Esempio di utilizzo del serializzatore:
L'esempio seguente mostra come configurare KafkaFlow con il serializzatore:
services.AddKafka(kafka => kafka .UseConsoleLog() .AddCluster(cluster => cluster .WithBrokers(new[] { "localhost:9092" }) .AddProducer<CustomerProducer>(producer => producer .DefaultTopic("customer-events") .AddMiddlewares(m => m .AddSerializer<GlueSchemaRegistryKafkaFlowProtobufSerializer<Customer>>( () => new GlueSchemaRegistryKafkaFlowProtobufSerializer<Customer>("config/gsr-config.properties") ) ) ) ) );
Esempio di utilizzo del deserializzatore:
L'esempio seguente mostra come configurare KafkaFlow con il deserializzatore:
.AddConsumer(consumer => consumer .Topic("customer-events") .WithGroupId("customer-group") .WithBufferSize(100) .WithWorkersCount(10) .AddMiddlewares(middlewares => middlewares .AddDeserializer<GlueSchemaRegistryKafkaFlowProtobufDeserializer<Customer>>( () => new GlueSchemaRegistryKafkaFlowProtobufDeserializer<Customer>("config/gsr-config.properties") ) .AddTypedHandlers(h => h.AddHandler<CustomerHandler>()) ) )
Proprietà opzionali del produttore
È possibile estendere il file di configurazione con proprietà opzionali aggiuntive:
# Auto-registration (if not passed, uses "false") schemaAutoRegistrationEnabled=true # Schema name (if not passed, uses topic name) schema.name=my-schema # Registry name (if not passed, uses "default-registry") registry.name=my-registry # Cache settings cacheTimeToLiveMillis=86400000 cacheSize=200 # Compatibility mode (if not passed, uses BACKWARD) compatibility=FULL # Registry description description=This registry is used for several purposes. # Compression (if not passed, records are sent uncompressed) compressionType=ZLIB
Formati di dati supportati
Entrambe le implementazioni Java e C# supportano gli stessi formati di dati:
AVRO: formato binario Apache Avro
JSON: formato dello schema JSON
PROTOBUF: formato Protocol Buffer
Note
Per iniziare a usare la libreria, visita https://www.nuget. org/packages/AWS.Colla. SchemaRegistry
Il codice sorgente è disponibile all'indirizzo: https://github.com/awslabs/aws-glue-schema-registry