我正在使用来自confluent的kafka connect框架将消息从我的应用服务器生成到kafka集群(zookeeper+brokers+schema registry for avro支持)。
我通过connect发送的数据是由avro模式定义的。我的架构表示包含枚举的结构化对象。实际上,apacheavro支持枚举类型。我不必将我的模式提交到注册表,因为kafka connect api会自动提交。
我的问题是kafka connect似乎将枚举解析为字符串。当我尝试使用时,我发现connect提交的模式是不正确的,因为它已将我的所有枚举转换为字符串。因此,如果不实现从字符串到枚举的转换逻辑,我就无法使用数据。
我想保持我的逻辑信息作为一个枚举,并使用Kafka连接以及。我跳进了kafka连接代码,它似乎不处理枚举类型,而只处理基本类型。
我的替代方案是构建自己的生成框架,通过模仿connect框架来保持enum,但这很耗时,而且我无法避免使用enum。
您是否使用kafka connect生成并使用包含kafka枚举的记录?
任何帮助或经验反馈都欢迎,谢谢!
1条答案
按热度按时间5fjcxozz1#
在较新版本的connect(大约4.2+)中,有以下属性(我个人还没有在文档中看到,但是我能够在源代码中找到它们,因为我也发现了与您相同的东西)
如您所见,默认值为false,我在较新版本中被告知,它将设置为true
现在,您需要在worker/connector级别设置这些枚举,以保留枚举,假设您运行的connect版本具有这些枚举