使用Spring批处理在单个步骤中单个作业中的多个读卡器

hmae6n7t  于 2023-02-03  发布在  Spring
关注(0)|答案(1)|浏览(149)

我是 Spring 批处理的新手。我有一个用例,在这个用例中,我必须从一个特定的文件夹中读取文件,并将这些文件写入DB。
例如,我有一个这样的文件夹

  • 公司_集团|- 我的公司组json-我的公司组备选标识json-sg公司组json-sg公司组备选标识json
    注:sg =新加坡,my =马来西亚
    现在,我想按以下顺序阅读这些文件.
  • SG文件应该比我的文件先读。
  • 对于每个国家,备用文件应放在首位。

例如,sg_公司_组_备选标识. json sg_公司_组. json
MY文件也是如此
目前,我正在通过编写自定义MultiResourcePartitioner读取所有文件,并按照上面提到的方式对文件进行排序。
1个文件将有1个写入器和读取器。
将有1个作业。
现在,问题是我有一个步骤,我有一个自定义的分区程序,我上面提到过,它得到所有的文件排序,但是它只进入一个读取器,它将通过一个读取器来读取所有的文件,我想要多个读取器来读取所有的文件。
我的意思是说,在一个作业中,我有一个加载所有文件的步骤。现在在这个步骤中,1个文件被读取,写入数据库,在同一步骤中重复其他文件。
根据我的理解, Spring 批处理不允许在一个步骤中有多个读者。
是否有任何变通方案?
谢谢。

uujelgoq

uujelgoq1#

我建议为每个文件创建一个作业示例,这意味着将文件作为标识作业的参数传递。

  • 缩放:您可以并行运行多个作业,每个作业处理一个不同的文件
  • 容错性:如果作业失败,您只需重新启动失败的作业,而不会影响其他文件

相关问题