使用Kafka Avro序列化程序处理Java 8 LocalDate并自动生成

使用Kafka Avro序列化程序处理Java 8 LocalDate并自动生成,java,apache-kafka,avro,spring-cloud-stream,confluent-schema-registry,Java,Apache Kafka,Avro,Spring Cloud Stream,Confluent Schema Registry,仅供参考:Spring Boot 2.2.4.RELEASE,Spring Cloud Hoxton.SR1,融合Docker平台5.4.0和相应的Kafka Avro序列化程序,Spring Cloud Stream Schema 2.2.1.RELEASE(Avro 1.9.1) 从那里开始: 使用ConfluentSchemaRegistryClient但无法加载本地avro架构文件,不知道为什么,我一直在尝试使用Spring的Spring.cloud.stream.schema.avro

仅供参考:Spring Boot 2.2.4.RELEASE,Spring Cloud Hoxton.SR1,融合Docker平台5.4.0和相应的Kafka Avro序列化程序,Spring Cloud Stream Schema 2.2.1.RELEASE(Avro 1.9.1) 从那里开始:

使用ConfluentSchemaRegistryClient但无法加载本地avro架构文件,不知道为什么,我一直在尝试使用Spring的Spring.cloud.stream.schema.avro.dynamicSchemaGenerationEnabled属性和true。 消息转换器通过spring.cloud.stream.bindings.output/input.contentType=application/*+avro激活

我的第一个问题是不支持可为null的值,因此我一直想知道,在自动生成模式时,如何指示字段何时可为null(这是生产者方面的问题)。通过在我的信息系统中设置非空值来处理它之后:-(我遇到了LocalDate字段的另一个问题,因为LocalDate没有默认构造函数,所以反序列化失败(这是消费者方面的问题)

因此,我迁移了我的程序以使用Joda Time,但是它的LocalDate类遇到了同样的问题,即嵌入了一个没有默认构造函数的年代字段

所以,我的问题是:我可以使用某种转换器来实现包含Java 8本地日期的端到端通信吗?我读到Avro 1.9本来应该支持它们()。所以我可能做错了,但是我手工生成的Avro模式看起来很像(但没有可为空的类型)

谢谢