AWS.Glue.SchemaRegistry
1.0.0-linux-musl-x64
Prefix Reserved
See the version list below for details.
dotnet add package AWS.Glue.SchemaRegistry --version 1.0.0-linux-musl-x64
NuGet\Install-Package AWS.Glue.SchemaRegistry -Version 1.0.0-linux-musl-x64
<PackageReference Include="AWS.Glue.SchemaRegistry" Version="1.0.0-linux-musl-x64" />
<PackageVersion Include="AWS.Glue.SchemaRegistry" Version="1.0.0-linux-musl-x64" />
<PackageReference Include="AWS.Glue.SchemaRegistry" />
paket add AWS.Glue.SchemaRegistry --version 1.0.0-linux-musl-x64
#r "nuget: AWS.Glue.SchemaRegistry, 1.0.0-linux-musl-x64"
#:package AWS.Glue.SchemaRegistry@1.0.0-linux-musl-x64
#addin nuget:?package=AWS.Glue.SchemaRegistry&version=1.0.0-linux-musl-x64&prerelease
#tool nuget:?package=AWS.Glue.SchemaRegistry&version=1.0.0-linux-musl-x64&prerelease
AWS Glue Schema Registry Serializers / De-serializers for C#
This package provides the Glue Schema Registry (GSR) serializers / de-serializers for Avro, JSON and Protobuf data formats.
Development
The C# serializers / de-serializers (SerDes) are built as bindings over existing C library of GSR SerDes. The C library is a facade over GraalVM compiled Java SerDes.
Building
Building the C / Java code
Follow the instructions in those specific projects to build them.
Building C# code
dotnet clean .
# For Debug configuration
dotnet build .
# For Release configuration
dotnet build . --configuration Release
Releasing as a nupkg
After the build steps are successful, do the following:
dotnet pack -c Release --no-build
This outputs: ./bin/Release/AWSGsrSerDe.1.0.0.nupkg
Running C# tests
# Set AWS environment credentials and verify that the 'test-registry' exists in AWS Glue.
# Run the test suite
dotnet test .
# Run the test suite with coverage
dotnet tool install --global dotnet-coverage
apt-get update && apt-get install libxml2
dotnet-coverage collect dotnet test -f xml -o coverage.xml
# for html report
dotnet tool install -g dotnet-reportgenerator-globaltool
reportgenerator -reports:**/coverage.xml -targetdir:coverage-report -reporttypes:Html
Using Csharp Glue Schema client library with KafkaFlow for SerDes
Sample serializer usage:
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")
)
)
)
)
);
Sample deserializer usage:
.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>())
)
)
Using Csharp Glue Schema client library for Kafka SerDes
Sample serializer usage:
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)
Sample deserializer usage:
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);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Apache.Avro (>= 1.12.0)
- Google.Protobuf (>= 3.32.1)
- KafkaFlow (>= 3.0.10)
- Microsoft.Extensions.Caching.Memory (>= 9.0.9)
- NJsonSchema (>= 10.8.0)
- System.Runtime.Caching (>= 6.0.0)
- System.Text.Json (>= 9.0.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.1-linux-x64 | 63 | 11/8/2025 |
| 1.0.1-linux-musl-x64 | 74 | 11/8/2025 |
| 1.0.1-linux-arm64 | 52 | 11/8/2025 |
| 1.0.0-linux-x64-beta | 63 | 11/1/2025 |
| 1.0.0-linux-x64 | 133 | 11/4/2025 |
| 1.0.0-linux-musl-x64-beta | 51 | 11/1/2025 |
| 1.0.0-linux-musl-x64 | 127 | 11/4/2025 |
| 1.0.0-linux-arm64-beta | 49 | 11/1/2025 |
| 1.0.0-linux-arm64 | 127 | 11/4/2025 |