我正在使用 Spring Batch 并使用 KafkaItemReader 从 Kafka 主题读取数据。但是,我注意到 KafkaItemReader 需要在初始化期间显式提供主题分区列表。当 Kafka 动态分配或撤销分区时,它似乎无法处理自动重新平衡。
此限制需要手动管理分区,这增加了复杂性,并且无法利用 Kafka 内置的重新平衡功能。
我的问题是:
为什么 KafkaItemReader 本身不支持 Spring Batch 中的自动重新平衡? 有没有办法解决这个限制,例如实现具有自动重新平衡逻辑的自定义 ItemReader? 如果有人有处理此问题的工作示例或 GitHub 链接,您可以分享吗? 任何见解、建议或代码示例将不胜感激。谢谢!
任何见解、建议或代码示例将不胜感激。谢谢!
@https://stackoverflow.com/users/460557/jorge-campos 的以下评论就是答案:
Spring Batch 不支持自动重新平衡,因为它是为批处理而设计的,它优先考虑确定性和一致性而不是动态重新平衡。当分区在重新平衡期间被撤销时,正在进行的读取可能会失去连续性,从而破坏批处理的预期保证
如果需要支持动态性,则需要创建自定义项目阅读器。