我正在使用confluent的kafka连接框架将我的应用程序服务器从我的应用程序服务器生成kafka群集(Zookeeper Brokers Brokers schema registry in AVRO支持(。
(。 (。我通过连接发送的数据由AVRO模式定义。我的模式代表包含枚举的结构化对象。确实,Apache Avro支持支持枚举类型。我不必对注册表进行架构,因为Kafka Connect API会自动进行。
我的问题是Kafka Connect似乎将枚举分解为字符串。当我尝试消耗时,我会看到连接制作的架构是不正确的,因为它已将我的所有枚举转换为字符串。因此,我无法消耗我的数据,以实现从字符串回到枚举的转换逻辑。
我想将我的逻辑信息保留为枚举,并也使用Kafka Connect。我跳入了Kafka-Connect代码,它似乎不处理枚举类型,而仅处理基本类型。
我的替代替代方法是建立自己的生产框架,该框架通过模仿连接框架来保持枚举,但这很耗时,我无法避免使用枚举。
您是否设法使用kafka-connect制作和消费包含枚举的记录?
任何帮助或经验的反馈都是welcomme,谢谢!
在Connect的最新版本中(也许是4.2 (,有这些属性。(我个人没有在文档中看到,但是我能够在源代码中找到它们,因为我也找到了与您相同的东西(
如您所见,默认值是错误的,并且在较新的版本中被告知,它将设置为true
public static final String ENHANCED_AVRO_SCHEMA_SUPPORT_CONFIG = "enhanced.avro.schema.support";
public static final boolean ENHANCED_AVRO_SCHEMA_SUPPORT_DEFAULT = false;
public static final String ENHANCED_AVRO_SCHEMA_SUPPORT_DOC =
"Enable enhanced avro schema support in AvroConverter: Enum symbol preservation and Package"
+ " Name awareness";
目前,您需要将它们设置在工作/连接器级别以保留枚举,前提是您正在运行具有这些