kafka connect avro枚举解析为字符串

iklwldmw  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(502)

我正在使用来自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枚举的记录?
任何帮助或经验反馈都欢迎,谢谢!

5fjcxozz

5fjcxozz1#

在较新版本的connect(大约4.2+)中,有以下属性(我个人还没有在文档中看到,但是我能够在源代码中找到它们,因为我也发现了与您相同的东西)
如您所见,默认值为false,我在较新版本中被告知,它将设置为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";

现在,您需要在worker/connector级别设置这些枚举,以保留枚举,假设您运行的connect版本具有这些枚举

相关问题