java - auto.register.schemas 是否应该在修改 .avsc 时在模式注册表中创建一个新版本?
问题描述
我注意到一个奇怪的事情,试图遵循关于 Kafka 模式注册表和简单生产者的教程。.avsc
如果我更改文件,它不会在模式注册表中自动生成新模式。我做的步骤:
- 启动本地模式注册表、Kafka 和 Zookeeper
- 创建
.avsc
具有 2 个字符串字段的文件 - 使用创建 Java 生产者
KafkaProducer
- 我正在使用 avro-maven-plugin 从文件中生成 Java 类.avsc
。 - 编译并运行生产者——生成新的 Java 类并生成记录。此外,在模式注册表中会出现一个新条目。
- 修改
.avsc
文件 - 在那里添加一个新字段 - 编译 - 使用新字段生成新的 Java 类。我将此字段添加到生产者代码中。
- 运行生产者- 没有记录产生,没有在模式注册表中创建新版本的模式,但我也没有例外。
在最后一步中,我希望auto.register.schemas
创建一个新的模式版本,但它没有。在我使用模式注册表中的 curl 手动创建它之后,记录开始再次正确生成。
我担心没有例外,这使得很难理解为什么不产生记录。
解决方案
如果您只使用一条(或几条)消息调用 send 方法,那么它不会立即发送到代理,您需要刷新生产者才能做到这一点。理想情况下,通过向 JVM 添加关闭挂钩
仅在记录发送和序列化时才需要注册模式
推荐阅读
- c# - 使用 ASP.NET 和 Owin 时,我在哪里可以设置上次登录时间?
- r - 从数据框中的其他行中提取和使用信息?
- math - 带有十六进制值的 ARM 汇编问题
- c# - C# .NET 序列化程序是原子的吗?
- graphql - 顶级或查看器类型内的 GraphQL 查看器上下文查询?
- javascript - 将 Javascript 字符串转换为整数问题
- c# - 打开新窗口时如何更改 C# wpf 背景图像?
- django - 如何使用 Javascript (React) 设置 Django 频道 self.scope["user"]
- javascript - 如果不是最后一项,则循环遍历 JavaScript 对象并将字符串添加到结尾
- javascript - 尝试原生 Element.animate 方法,但无法添加关键帧百分比