使用 avro 的 Kafka 控制台生产者

Kafka Console Producer using avro

我正在尝试使用来自 apache-kafka 二进制文件的 kafka-console-producer 生成消息,并在 spring 启动时从消费者设置中使用。消费者使用 avro 架构。

当消息以 json 格式生成时,我的消费者抛出异常 - “无法序列化”。

我找到了一个使用“Confluent Platform 7.1”的解决方案,它有 kafka-avro-console-producer。支持avro,不过是企业版。

有没有办法使用 apache-kafka 本身和 kafka-console-producer produce/consume 具有 avro 模式的消息?

默认情况下,

kafka-console-producer 仅接受 UTF8 字符串。在内部,它默认使用 StringSerializer

The kafka-avro-console-consumer wraps the other, and it's source-available, not Enterprise。您至少需要下载 Confluent kafka-avro-serializer JAR 文件和依赖项才能使用它生成 Avro 数据,但这也需要您使用 Schema Registry。

如果您只是想在没有注册表的情况下生成 Avro 二进制数据,您可以使用 Avro BinaryEncoder class,但是,这将要求您在任何消费者中也需要自己的反序列化器,而不是使用提供的反序列化器通过 Confluent(再次强调,免费,而非企业版)