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
Untuk memulai dengan perpustakaan, silakan kunjungi https://www.nuget. org/packages/AWS.Lem. SchemaRegistry
Kode sumber tersedia di: https://github.com/awslabs/aws-glue-schema-registry