Java 修改.avsc时,auto.register.schemas是否应该在schema注册表中创建新版本?

Java 修改.avsc时,auto.register.schemas是否应该在schema注册表中创建新版本?,java,apache-kafka,confluent-schema-registry,Java,Apache Kafka,Confluent Schema Registry,我注意到一件奇怪的事情,它试图遵循关于Kafka模式注册表和简单生产者的教程。如果我更改.avsc文件,它不会在模式注册表中自动生成新模式。我采取了以下步骤: 启动本地模式注册表、Kafka和Zookeeper 创建带有2个字符串字段的.avsc文件 使用KafkaProducer创建Java producer-我正在使用avro maven插件从.avsc文件生成Java类 编译并运行producer—生成新的Java类并生成记录。此外,在模式注册表中会出现一个新条目 修改.avsc文件-在那

我注意到一件奇怪的事情,它试图遵循关于Kafka模式注册表和简单生产者的教程。如果我更改
.avsc
文件,它不会在模式注册表中自动生成新模式。我采取了以下步骤:

  • 启动本地模式注册表、Kafka和Zookeeper
  • 创建带有2个字符串字段的
    .avsc
    文件
  • 使用
    KafkaProducer
    创建Java producer-我正在使用avro maven插件从
    .avsc
    文件生成Java类
  • 编译并运行producer—生成新的Java类并生成记录。此外,在模式注册表中会出现一个新条目
  • 修改
    .avsc
    文件-在那里添加一个新字段
  • 编译-使用新字段生成新的Java类。我将此字段添加到生产者代码中
  • 运行producer-不会生成任何记录,不会在架构注册表中创建架构的新版本,但我也不会得到任何异常
  • 在最后一步中,我期望
    auto.register.schemas
    创建一个新的模式版本,但它没有。在schema registry中使用curl手动创建它之后,记录再次开始正确生成


    我担心的是,没有例外,这使得人们很难理解为什么不生成记录。

    如果您仅使用一条(或几条)消息调用send方法,那么该方法不会立即发送给代理,您需要刷新生产者才能做到这一点。理想情况下,通过向JVM添加一个关闭挂钩


    只有当记录被发送并序列化时,架构才需要注册

    您可以共享您的生产者代码吗?我发送了10条记录并刷新,它成功地刷新了,没有异常,但记录没有出现。因此,如果您从主题开始运行消费者,您什么也看不到?可能因为您没有SLF4J设置,所以没有记录异常?