我正在开发一个数据加载器应用程序,它使用平面文件读取数据并插入到临时临时表中 . 这是使用MultiResourcePartitioner( thread pool 10-11,queue 151 )完成的,其中每个步骤对每个文件并行运行 . 有大约 15000 个文件,所以一旦第一个 set of 150 file resources 完成, jobexecutiondecideragain run another 150 files 类似,这样直到15000个文件完成 .

下一步是将数据从登台表移动到主表,然后压缩文件并将其移动到另一个位置 . 在设计升级和归档步骤时,我要求您输入中等吞吐量,如果作业失败,则在下一次运行期间,即 . 在大约3个小时之后,它应该清除所有陈旧数据并将 COMPLETED 数据移动到主表 . 当我说 COMPLETED 时,这意味着一个完整的完整文件被成功读取并插入到临时表中 . 只有这些数据被移动到主表 . 我们还有另一个表,用于存储文件名,文件路径和完成状态,并在成功完成文件后更新,更新afterStep方法 .

Note:

我们不希望直接插入到主表中,因为该表具有物化视图,因此删除主表中的陈旧数据会影响业务用户查看报表,有一次他们看到记录,下次记录因工作而消失每小时运行并清除不成功的数据 .

我目前的方法是运行与多源分区步骤并行的分段步骤,并有一个固定延迟为2分钟的预定任务执行程序,tasklet bean轮询登台表,移动已处理标志Y的数据并从分段表中删除,同时监视分区步骤,无论是运行还是停止 . 如果正在运行tasklet将返回RepeatStatus.CONTINUE,如果分区步骤完成,则完成RepeatStatus.FINISHED . 最后一步将归档文件 . 当作业再次启动时,如果某个归档文件未完成,这是从另一个存储文件名等的表中已知的,列is_archived是Y未存档,A archived.let我知道您的注释 .