Sas*_*adi 2 .net c# serialization apache-kafka customserializer
我想在 CSharp 中为 kafka 编写一个自定义序列化程序。我搜索了很多,但没有找到关于如何用 dotnet 语言为 kafka 编写自定义序列化程序的好参考。
关于如何编写一个以及如何做到这一点的任何想法?
我只是找到了这个问题的答案。在 dotnet 中用于 kafka 的库由 confluent 提供。
应该有一个实现接口的序列化类:
Confluent.Kafka.ISerializer<T>
Run Code Online (Sandbox Code Playgroud)
通常我们应该通过 ProducerBuilder 类创建生产者:
Confluent.Kafka.ProducerBuilder<TKey, TValue>
Run Code Online (Sandbox Code Playgroud)
此类有一个方法可以为键和值设置序列化程序。它与 Kafka 中自定义序列化器的原始文档略有不同,后者指示在生产者配置中设置自定义序列化器类的名称。
以下是设置值序列化器的代码:
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();
Run Code Online (Sandbox Code Playgroud)
Serialization 类的示例代码是这样的;
public class CustomerSerializer : Confluent.Kafka.ISerializer<Customer>
{
public byte[] Serialize(Customer data, SerializationContext context)
{ ..........}
}
Run Code Online (Sandbox Code Playgroud)
在我的示例中,Customer 类没有什么重要的,它是一个普通的类,只是为了保存客户属性。
在序列化类中,你应该在 Serialize 方法中返回一个 byte[] ,这是显而易见的!
我希望这对使用 dotnet 实现 Kafka 的人有用。
| 归档时间: |
|
| 查看次数: |
1425 次 |
| 最近记录: |