【问题标题】:Spring Batch: Read data from Kafka and write to a fileSpring Batch:从 Kafka 读取数据并写入文件
【发布时间】:2023-03-14 21:34:01
【问题描述】:

我是 Spring 批次的新手。 我正在处理需要从 Kafka 读取数据并根据读取的数据创建文件的需求。

经过一番研究,我了解到我需要使用 Spring Integration 来连接和读取来自 Kafka 的数据。

我已经构建了一个 Spring 批处理应用程序,我在其中使用 Spring Integration 连接并从 Kafka 读取数据。

我被困在这一点上,关于如何将从 Kafka 读取的数据传递给 Spring Batch FlatFileItemWriter。

我想知道我从 Kafka(使用 Spring 集成)读取数据的方法是否正确?如果是,我如何将从 Kafka 读取的数据传递给 ItemWriter。

如果方法错误,在 Spring Batch 中实现此要求的最佳方法是什么。

谢谢, 开源浏览器

【问题讨论】:

  • 那么,您确实有一个从 kafka 读取的 spring-batch 侦听器(我猜是自定义的)?
  • 我有一个 Spring Integration Kafka Consumer 可以从 kafka 中读取......

标签: spring-batch


【解决方案1】:

Spring Batch 提供了一个JmsItemReader。我希望您可以编写一个基于 Kafka 的 ItemReader,它以类似的方式工作,将来自 Kafka 的每条消息作为每个常规 Spring Batch 范例的一个项目读取。您可以在 Github 上查看 JmsItemReader 的代码:https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/jms/JmsItemReader.java

【讨论】:

  • 抱歉对旧答案发表评论。 KafkaItemReader 现在这样做了,对吧?我试过了,但是一旦它读取了所有消息,它就会停止并关闭。我宁愿希望它继续运行并等待新消息(如果达到块大小,则处理并再次等待)。这可能吗?
  • 虽然有可能,但这并不是批处理。批处理应该在每个“批处理”中处理有限数量的数据。
  • 是的,有道理。尽管它限制了 Kafka 作为流媒体平台。必须不断启动 Job,而更高的吞吐量不是开销吗?
  • 另外,只是一个简单的问题。当您说“有可能”时,您是否暗示要在无限状态下运行 KafkaItemReader?我们可以通过不从阅读器返回 null 来做到这一点吗?请建议。
猜你喜欢
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 2015-08-30
相关资源
最近更新 更多