我的问题陈述。读取一个有 1000 万条数据的 csv 文件并将其存储在 db 中。用尽可能少的时间。
我已经使用 java 的简单多线程执行器实现了它,逻辑几乎类似于 spring 批处理的块。从 csv 文件中读取预先配置的数据数量,然后创建一个线程,并将数据传递给验证数据的线程,然后写入在多线程中运行的文件。完成所有任务后,我将调用 sql loader 来加载每个文件。现在我想将此代码移至 spring 批处理(我是 spring 批处理的新手)
这是我的问题
1. 在任务中,是否可以使 ItemReader 到 Item writer 多线程(当我读取文件时,在线程写入数据之前创建一个新线程来处理数据)?如果不是,我需要创建两个步骤,第一步读取单线程文件,另一个步骤是多线程写入单个文件,但是如何将数据列表传递给上一个任务的另一个任务。
2. 如果单个线程出现故障,如何停止整个批处理作业。
3. 间隔一定时间后,如果失败,如何重试批处理作业。我知道在失败的情况下有重试选项,但我找不到在失败的情况下在一定时间间隔后重试任务的选项。在这里我不是在谈论调度程序,因为我已经在调度程序下运行了批处理作业,但是如果失败,它必须在 3 分钟后重新运行。
最佳答案
这是我解决问题的方法。
关于multithreading - Spring批处理多线程处理单个文件到多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18672776/