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