我刚开始使用Kafka并遇到以下菜鸟错误:
'Value cannot be null.
Parameter name: Value serializer not specified and there is no default serializer defined for type ActMessage.'
[尝试发送类对象ActMessage对象,而不是示例附带的简单字符串时,会发生这种情况。引发错误的代码行是:
using (var p = new ProducerBuilder<Null, ActMessage>(config ).Build()
我正在使用.net client.
我的理解是,我需要在第一个类型参数中使用默认的序列化之一,如here所述,Kafka客户端随附了一个默认序列化,但在此.net软件包中找不到它们。我想我可以建造一个,但这会浪费时间。
以下是可重现的示例:
public class ActMessage {
public int SomeId {get;set;}
public string SomeContent {get;set;}
}
class Tester {
void send(){
var config = new ProducerConfig { BootstrapServers = "localhost:9092" };
using (var p = new ProducerBuilder<Null, ActMessage>(config).Build()) //throws error here
{
var dr = p.ProduceAsync("news", new Message<Null, ActMessage>
{
Value = new ActMessage { SomeId = 1, SomeContent="hi" },
}
).Result;
}
}
}