#json-schema #protobuf #avro #schema-registry #kafka #format

schema-registry-client

Serialize/deserialize data to/from Kafka using the Confluent Schema Registry

3 unstable releases

new 0.2.1 Apr 17, 2025
0.2.0 Apr 16, 2025
0.1.0 Apr 16, 2025

#602 in Encoding

Download history 131/week @ 2025-04-10

136 downloads per month

Apache-2.0

385KB
10K SLoC

rust-schema-registry-client

crates.io docs.rs Build Status license

A fully asynchronous Rust client library for interacting with the Confluent Schema Registry.

The library

rust-schema-registry-client provides a Schema Registry client, along with serdes (serializers/deserializers) for Avro, Protobuf, and JSON Schema.

Features

  • Support for Avro, Protobuf, and JSON Schema formats
  • Data quality rules using Google Common Expression Language (CEL) expressions
  • Schema migration rules using JSONata expressions
  • Client-side field-level encryption (CSFLE) rules using AWS KMS, Azure Key Vault, Google Cloud KMS, or HashiCorp Vault

This library can be used with rust-rdkafka but does not depend on it.

Serdes

Installation

Add this to your Cargo.toml:

[dependencies]
schema-registry-client = { version = "0.2.1" }

The following features are available:

  • rules-cel - enables data quality rules using CEL
  • rules-encryption-awskms - enables CSFLE rules using AWS KMS
  • rules-encryption-azurekms - enables CSFLE rules using Azure Key Vault
  • rules-encryption-gcpkms - enables CSFLE rules using Google Cloud KMS
  • rules-encryption-hcvault - enables CSFLE rules using HashiCorp Vault
  • rules-encryption-localkms - enables CSFLE rules using a local KMS (for testing)
  • rules-jsonata - enables schema migration rules using JSONata

For example, to use CSFLE with the AWS KMS, add this to your Cargo.toml:


[dependencies]
schema-registry-client = { version = "0.2.1", features = ["rules", "rules-encryption-awskms"] }

Examples

You can find examples in the examples folder. To run them:

cargo run --example <example_name> -- <example_args>

Further information can be found in this blog.

Dependencies

~24–45MB
~762K SLoC