我有一个要求,我必须读取一个包含数千行的文本文件(每行是JSON对象)。我需要读取,验证每行数据并持久保存到不同的表中(跨国 - &gt坚持全线或不坚持这条路线。 春季批次是否适合这一要求..?如果是,如何继续。
如果使用spring批处理,如何为基于行的读取启用多线程,验证并持久保存到数据库。每一行都是一个单独的线程。
考虑如下编写服务。
对于每一行异步:
读取行,验证该行并保留该行,以便内存使用量也减少,而不是将所有文件行加载到内存中。 (就像每一行是一个单独的线程)
如何继续实施..?
提前致谢,
答案 0 :(得分:0)
Spring Batch应该满足那些要求。回答你的第一个问题 - 如何继续:我建议你阅读一些可用的教程。也许你可以尝试一下并将其扩展到你的需求:Spring Batch tutorial。
关于多线程主题:Spring Batch有一堆概念以高效的方式执行ETL(提取,转换,加载)场景。所以在这里我建议您阅读非常好的文档:Spring Batch reference manual。
通常是" Chunking"如果您按照Reader - >处理成千上万行而不会出现内存问题处理器 - >作家模式。如果您觉得需要更详细的完成工作的方法,那么您应该转到第7章。缩放和并行处理。
为了实现这一点,我会坚持使用传统的阅读器 - >处理器 - >作家模式。 Spring Batch提供了一个 JsonLineMapper 这里适合的东西。