使用 CSharp 在 Kafka 中自定义序列化
Custom serialization in Kafka using CSharp
我想在 CSharp 中为 kafka 编写一个自定义序列化程序。我搜索了很多,但找不到关于如何用 dotnet 语言为 kafka 编写自定义序列化程序的良好参考。
对如何使用 dotnet 编写一个有任何想法吗?
我刚找到这个问题的答案。
dotnet中kafka使用的库由confluent提供。
应该有一个实现接口的序列化 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 的人们有用。
我想在 CSharp 中为 kafka 编写一个自定义序列化程序。我搜索了很多,但找不到关于如何用 dotnet 语言为 kafka 编写自定义序列化程序的良好参考。
对如何使用 dotnet 编写一个有任何想法吗?
我刚找到这个问题的答案。 dotnet中kafka使用的库由confluent提供。
应该有一个实现接口的序列化 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 的人们有用。