将大型 XML 文件大小与 Kafka 集成
Integrating a large XML file size with Kafka
XML 文件 (~100 Mb) 是外部系统对其整个数据库的批量导出(批量导出每 6 小时一次)。
例如,我无法更改集成以使用 Debezium 连接器。
我只能访问 XML 文件。
使用 Apache Kafka 使用文件的最佳解决方案是什么?
或者,使用 XSD 架构发送 XML 文件的单个消息的架构?
不以大的单个消息大小接收其内容对体系结构来说是一件坏事吗?
Kafka 中代理和主题级别的默认 max.message.bytes 配置设置为 c。 1MB,不建议显着增加该配置,因为 Kafka 未针对处理大型消息进行优化。
看到两个解决方案:
在将 XML 加载到 Kafka 之前,将其拆分为代表数据库的单个行的块。此外,我们将类型安全格式(例如 AVRO)与模式注册表结合使用,以告诉潜在消费者如何读取数据。
根据需要对大型 XML 文件执行的操作,您还可以将 XML 存储在弹性位置(例如 HDFS)并且只提供Kafka 消息中的位置路径。这样,消费者就可以使用来自 Kafka 主题的路径并对它们进行一些处理。
编写一个 Kafka 生产者将 XML 文件解组为 Java 对象,将 Avro 格式的序列化对象发送到集群是我的解决方案。
XML 文件 (~100 Mb) 是外部系统对其整个数据库的批量导出(批量导出每 6 小时一次)。 例如,我无法更改集成以使用 Debezium 连接器。 我只能访问 XML 文件。
使用 Apache Kafka 使用文件的最佳解决方案是什么? 或者,使用 XSD 架构发送 XML 文件的单个消息的架构?
不以大的单个消息大小接收其内容对体系结构来说是一件坏事吗?
Kafka 中代理和主题级别的默认 max.message.bytes 配置设置为 c。 1MB,不建议显着增加该配置,因为 Kafka 未针对处理大型消息进行优化。
看到两个解决方案:
在将 XML 加载到 Kafka 之前,将其拆分为代表数据库的单个行的块。此外,我们将类型安全格式(例如 AVRO)与模式注册表结合使用,以告诉潜在消费者如何读取数据。
根据需要对大型 XML 文件执行的操作,您还可以将 XML 存储在弹性位置(例如 HDFS)并且只提供Kafka 消息中的位置路径。这样,消费者就可以使用来自 Kafka 主题的路径并对它们进行一些处理。
编写一个 Kafka 生产者将 XML 文件解组为 Java 对象,将 Avro 格式的序列化对象发送到集群是我的解决方案。