Kafka Producer错误:'未指定值序列化程序,并且没有为类型…定义默认序列化程序。'

问题描述 投票:0回答:1

我刚开始使用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;
        }
    }
}
c# apache-kafka kafka-producer-api confluent-kafka
1个回答
0
投票

我建议在该存储库中检出有效的examples/目录,以查看可以复制到自己的项目中的有效代码。


假设您想要use Avro

您将使用schemagen创建您的课程,而不是费力地编写它。

然后您必须always add some ValueSerializer in Kafka clients才能发送数据

© www.soinside.com 2019 - 2024. All rights reserved.