spring-boot - 通过 spring kafka 发送时,landoop/fast-data-dev 中的 kafka 消息数据类型错误
问题描述
我有一个使用 Spring-Kafka 的 Spring Boot 应用程序,并且我在 docker 中使用landoop 的 fast-data-dev作为我的 kafka 集群。我使用 kafka 模板、avro 和 confluent 的模式注册表为某些主题生成消息。一切似乎都工作正常,但是当我输入 fast-data-dev ui 时,我可以看到我的架构已注册,并且我的消息仍然可见,Data type: binary
而不是“avro”,因此它们的值在 ui 中不可读。我尝试使用 kafka-avro-console-producer 将一些消息发送到不同的主题,这些消息没有这样的问题 - 它们在 avro 中可见并且在 ui 中可读。但是,当我使用 kafka-avro-console-producer 向我的应用程序发送消息的同一主题发送消息时,它以与我的应用程序发送的消息相同的方式可见(作为二进制文件)。
我在 Spring-Kafka 添加数据类型标头时遗漏了什么吗?或者也许有一个完全不同的原因?
这是我的 application.yml 的一部分:
spring.kafka:
bootstrap-servers: localhost:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: io.confluent.kafka.serializers.KafkaAvroSerializer
properties:
schema.registry.url: http://localhost:8081
另外,当我使用本地安装的融合平台时,消息是可读的,所以问题可能出在 fast-data-dev 图像的某个地方?
解决方案
来自Landoop Kafka-Topic-ui第21行的代码
有一个函数采用参数中的“格式”。假设这getDataFromBeginning
是从主题中检索所有消息的函数,如果“格式”(二进制,avro,...)更改......它将不起作用。
恕我直言,这就是导致您的问题的原因。
推荐阅读
- numpy - 读写numpy嵌套数组
- python - 从 0 和 1 的字符串创建一组字符串,其中只有两个字符被更改(python)
- python - 使 pandas df 索引连续
- php - password_verify - 密码与哈希不匹配
- typescript - 如何使用我自己的声明文件解决“找不到模块的声明文件”错误?
- java - 如何将精灵的坐标附加到它的中心?LibGDX
- python - AttributeError:模块“django.db.models”没有属性“RichTextField”
- php - 如何恢复用户在下拉列表中的点击
- java - 在 Payara 5.194 for java ee 7 应用程序上重新部署失败
- python - 试图理解为什么我的秒表代码什么都不做(Python)