Ошибка производителя Kafka: «Сериализатор значений не указан, и для типа ... не определен сериализатор по умолчанию». - PullRequest
0 голосов
/ 14 апреля 2020

Я только начал использовать Kafka и нажал на следующую ладью ie error:

'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.

Насколько я понимаю, мне нужно использовать один по умолчанию сериализуется в параметре первого типа, который поставляется с клиентом 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;
        }
    }
}

1 Ответ

0 голосов
/ 15 апреля 2020

Я предлагаю проверить рабочий каталог examples/ в этом репо, чтобы увидеть рабочий код, который вы можете скопировать в свои собственные проекты.


Предполагая, что вы хотите использовать Avro

Вы бы использовали schemagen, чтобы создать свой класс, а не писать его вручную.

Затем необходимо всегда добавлять ValueSerializer в клиентах Kafka для отправки данных

...