View a markdown version of this page

C# Implementasi - AWS Glue

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

C# Implementasi

catatan

Prasyarat: Sebelum menyelesaikan langkah-langkah berikut, Anda harus memiliki sebuah klaster Amazon Managed Streaming for Apache Kafka (Amazon MSK) atau Apache Kafka yang berjalan. Produsen dan konsumen Anda harus berjalan di .NET 8.0 atau lebih tinggi.

Penginstalan

Untuk aplikasi C #, instal SerDe NuGet paket AWS Glue Schema Registry menggunakan salah satu metode berikut:

.NET CLI:

Gunakan perintah berikut untuk menginstal paket:

dotnet add package Aws.Glue.SchemaRegistry --version 1.0.0-<rid>

di mana <rid> bisa1.0.0-linux-x64, 1.0.0-linux-musl-x64 atau 1.0.0-linux-arm64

PackageReference (dalam file.csproj Anda):

Tambahkan yang berikut ini ke file proyek Anda:

<PackageReference Include="Aws.Glue.SchemaRegistry" Version="1.0.0-<rid>" />

di mana <rid> bisa1.0.0-linux-x64, 1.0.0-linux-musl-x64 atau 1.0.0-linux-arm64

Pengaturan File Konfigurasi

Buat file properti konfigurasi (misalnya,gsr-config.properties) dengan pengaturan yang diperlukan:

Konfigurasi Minimal:

Berikut ini menunjukkan contoh konfigurasi minimal:

region=us-east-1 registry.name=default-registry dataFormat=AVRO schemaAutoRegistrationEnabled=true

Menggunakan pustaka klien C# Glue Schema untuk Kafka SerDes

Contoh penggunaan serializer:

Contoh berikut menunjukkan cara menggunakan serializer:

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)
Contoh penggunaan deserializer:

Contoh berikut menunjukkan cara menggunakan deserializer:

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);

Menggunakan pustaka klien C# Glue Schema dengan for KafkaFlow SerDes

Contoh penggunaan serializer:

Contoh berikut menunjukkan cara mengkonfigurasi KafkaFlow dengan serializer:

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") ) ) ) ) );
Contoh penggunaan deserializer:

Contoh berikut menunjukkan cara mengkonfigurasi KafkaFlow dengan deserializer:

.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>()) ) )

Properti Produsen Opsional

Anda dapat memperluas file konfigurasi Anda dengan properti opsional tambahan:

# 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

Format Data yang Didukung

Implementasi Java dan C# mendukung format data yang sama:

  • AVRO: Format biner Apache Avro

  • JSON: Format Skema JSON

  • PROTOBUF: Format Buffer Protokol

Catatan