将 XML 文件加载到没有模式的 kafka 主题中

load an XML file into kafka topic without schema

我正在尝试将一个相当大的 XML 文件加载到 kafka 主题中。我知道如何加载 JSON、AVRO 等,但这些在主题中解析得很好,因为可以推断出它们的模式。如何使用 XML 执行此操作?如何为 XML 消息设置密钥?

我试过这样的东西

confluent kafka topic produce test1 --parse-key --delimiter , < NameOfFile.xml

但这只是将 XML 文件的每一行生成为一条新消息(只是值中的文本)。

XML 文件类似于以下内容(但更长):

<Mp ver="3" id="517131">
      <Fields>
        <aexst>N</aexst>
        <chexst>N</chexst>
        <clueexst />
        <ocdexst>N</ocdexst>
        <id>123</id>

我想要消息键说:

123

和消息值(只是 XML 文件的字符串):

<Mp ver="3" id="517131">
      <Fields>
        <aexst>N</aexst>
        <chexst>N</chexst>
        <clueexst />
        <ocdexst>N</ocdexst>
        <id>123</id>

如何在没有连接器的情况下执行此操作?

您可以尝试使用 kcat 或其他工具生成 Kafka,而不是使用汇合的工具。

如果您只想发布一个文件

kcat -P -b <broker_url> -t <topic> -p <partition_number> -k <key - 123 in your example> file.xml

您需要谨慎地为您的邮件选择合适的分区,或者设置 -1 将其发送到随机分区。

如果您不想 hard-code 命令中的密钥或者您有多个文件,您可以使用 yq 以编程方式从文件中提取密钥并将其提供给 kcat命令。