使用 CSharp 在 Kafka 中自定义序列化

Custom serialization in Kafka using CSharp

我想在 CSharp 中为 kafka 编写一个自定义序列化程序。我搜索了很多,但找不到关于如何用 dotnet 语言为 kafka 编写自定义序列化程序的良好参考。

对如何使用 dotnet 编写一个有任何想法吗?

我刚找到这个问题的答案。 dotnet中kafka使用的库由confluent提供。

Kafka .NET Client

应该有一个实现接口的序列化 class :

Confluent.Kafka.ISerializer<T>

通常我们应该通过 ProducerBuilder 创建生产者 class :

Confluent.Kafka.ProducerBuilder<TKey, TValue>

这个 class 有一个方法可以为键和值设置序列化程序。 它与 Kafka 中自定义序列化程序的原始文档略有不同,后者指示在生产者配置中设置自定义序列化程序的名称 class。

以下是设置值序列化器的代码:

var config = new ProducerConfig
{
    BootstrapServers = "localhost:9092",
    ClientId = "thiPC"
};

var producerBuilder = new ProducerBuilder<Null, Customer>(config);
producerBuilder.SetValueSerializer(new CustomerSerializer());       // <------ The Magic Code
var producer = producerBuilder.Build();

序列化的示例代码class是这样的;

public class CustomerSerializer : Confluent.Kafka.ISerializer<Customer>
{
    public byte[] Serialize(Customer data, SerializationContext context)
    { ..........}
}

在我的示例中,对客户 class 没有什么重要的,只是为了保存客户属性而正常 class。

在序列化中class,你应该return在序列化方法中的一个字节[],这是显而易见的!

我希望这对使用 dotnet 实现 Kafka 的人们有用。