在spring-batch中动态读取文件

维沙尔·辛格

我正在尝试使用网络上的spring-batch在不同的端点(PC,S3,Dropbox,Google驱动器)之间传输任何文件(视频,txt等)。为此,我正在获取包含要传输的文件位置(URL)列表的json文件(假设我可以访问这些位置)。

那么,一旦我的控制器被点击(在哪个作业中创建),而不是在启动spring-boot应用程序时,如何告诉读者读取输入呢?

我试过添加“ spring.batch.job.enabled = false”,它会阻止spring-batch自动启动,但是我担心的是我应该在哪里写设置将提供给ItemReader的资源行:

FlatFileItemReader<String> reader = new FlatFileItemReader<String>();
reader.setResource(someResource);

因为在设置资源的过程中,我得到了NullPointerException

Mahmoud Ben Hassine

Web容器中的正在运行的作业通过代码示例对此进行了说明。这是一个例外:

@Controller
public class JobLauncherController {

   @Autowired
   JobLauncher jobLauncher;

   @Autowired
   Job job;

   @RequestMapping("/jobLauncher.html")
   public void handle() throws Exception{
    jobLauncher.run(job, new JobParameters());
   }
}

在您的情况下,您需要从请求中提取文件名并将其作为作业参数传递,例如:

@RequestMapping("/jobLauncher.html")
public void handle() throws Exception{
   URL url = // extract url from request
   JobParameters parameters = new JobParametersBuilder()
        .addString("url", url)
        .toJobParameters();
   jobLauncher.run(job, parameters);
}

然后让您的读者逐步了解并从作业参数中动态提取文件:

@StepScope
@Bean
public FlatFileItemReader flatFileItemReader(@Value("#{jobParameters['url']}") URL url) {
   return new FlatFileItemReaderBuilder<String>()
        .resource(new UrlResource(url))
        // set other properties
        .build();
}

作业和步骤属性后期绑定部分对此进行了说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从流中读取而不是在Spring Batch ItemReader中读取文件

如何在Spring Batch中同时读取2个文件

Spring Batch 中任何支持读取 zip 下的多个文件

使用Spring Batch从HDFS读取文件

如何使用spring-batch从文件夹中连续读取文件?

如何使用spring-batch和MultiResourceItemReader读取文件夹中的所有文件?

当流从单个文件中读取时,如何在多台机器之间拆分 Spring Batch 的工作?

在Spring Batch中读取数千个jpeg文件的名称作为输入

使用Spring Batch读取以将输入CSV文件中的行转换为具有1到多关系的CSV文件

Spring Batch:读取不带换行符的固定宽度文件

Spring Batch:如何设置FlatFileItemReader来读取json文件?

如何使用Spring Batch通过excel文件读取和解析?

带有Spring Batch的Json Array读取器文件

Spring Batch-从DB读取-转换-并写入文件

Spring Batch读取不同的CSV文件和XML输出

spring boot中的属性文件读取错误

在Java Spring中从文件读取属性

在Spring Boot Fat Jar中读取文件

从Spring属性文件中读取值

在Spring Batch中创建批处理文件时,对每个项目动态应用自定义逻辑

在Spring Batch中读取和处理多个源

在Spring Batch中动态设置gridSize(线程数)

Spring Batch在Tasklet中执行动态生成的步骤

如何在Spring Batch中创建动态步骤

Spring Batch ItemReader读取的行数

在Spring Boot中通过动态键读取属性

Spring Batch如何使用PathMatchingResourcePatternResolver从文件夹及其所有子文件夹中读取所有json文件

无法在Spring Batch中的afterStep中清除文件夹

Spring Batch中的JobParameters