首页 > 解决方案 > 如何在 kafka 控制台生产者中添加键序列化器和值序列化器

问题描述

我在 spring boot kafka producer application.yaml 中设置了以下属性

消费者属性:

        key.deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer
        value.deserializer: io.confluent.kafka.serializers.KafkaAvroDeserializer

生产者属性:

        key.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer
        value.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer

我必须从 kafka 控制台生产者那里生成消息,例如- kafka-console-producer --bootstrap-server confluent-cp-kafka:9092 --topic TSTTOPIC --producer-property key.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer value.serializer: io.confluent.kafka.serializers.KafkaAvroSerializer

但它不起作用,当我从控制台生产者生成消息时,我在消费者日志中收到错误,如下所示

在此处输入图像描述

标签: apache-kafkaavro

解决方案


您不能在 CLI 上使用冒号。

如果你想使用你的属性文件,然后--producer.config通过producer.properties文件

否则,您可以kafka-avro-console-producer--producer-property key.serializer=io.confluent.kafka.serializers.KafkaAvroSerializer

至于 Avro 序列化程序,您似乎缺少任何key.schemaor value.schema+ schema.registry.url,它们只是由 the 读取的属性,kakfa-avro-console-producer并且可以解释为什么您的 Avro 消费者将无法读取数据(它以明文形式发送)


推荐阅读