【发布时间】:2021-10-24 04:08:27
【问题描述】:
我正在尝试实现一个多资源分区器。现在这是我正在使用的代码:
@Bean
@StepScope
public MultiResourcePartitioner multiResourcePartitioner(@Value("#{jobParameters['inputFiles']}")Resource[] resources){
MultiResourcePartitioner partitioner = new MultiResourcePartitioner();
partitioner.setKeyName("file");
partitioner.setResources(resources);
return partitioner;
}
这应该向每个步骤发送要读取和处理的文件的名称。 为了传递参数,我正在执行以下操作:
Map<String, JobParameter> parameters = new HashMap<>();
JobParameter parameter = new JobParameter(new Date());
parameters.put("currentTime", parameter);
parameters.put("inputFiles", new JobParameter("1.csv;2.csv"));
但是当我调试 MultiResourcePartitioner 类时,我看到的只是:
有人知道获取资源数组作为 MultiResourcePartitioner 类的输入的语法是什么吗?
这本书的内容如下: “我们需要在这个 Partitioner 上设置的另一个值是 资源。完成后,我们可以返回实例”
【问题讨论】:
-
您可以将作业参数作为带有匹配所有文件的通配符的字符串传递,例如
parameters.put("inputFiles", new JobParameter("/data/*.csv"));。 Spring 会将它们转换为资源数组。你可以在这里找到一个例子:github.com/mminella/scaling-demos/tree/master/partitioned-demo。这是你要找的吗? -
parameters.put("inputFiles", new Parameter("\\multifile\\*.csv"));不起作用,资源数组只是空的。我必须更改分隔符,因为我在 Windows 上
标签: spring-boot spring-batch partitioning