【问题标题】:How to set dynamic chunk size for a step with MutliResoucrItemReader?如何使用 MutliResoucrItemReader 为步骤设置动态块大小?
【发布时间】:2021-10-06 23:25:50
【问题描述】:

我正在使用 MultiResourceItemReader,它采用资源数组。我想根据每个资源中的行数动态设置块大小。

下面是配置文件中配置的步骤。

@Bean
public Step processStep(){
return stepBuilderFactory.get("processStep").<itempojo,itempojo>chunk(3) //I dont want to set fixed chunk  here
  .reader(multiResourceItemReader())
  .processor(processor())
  .writer(writer())
  .listener(readerListener())
  .build();

/** MulitResource Item Reader */

public MultiResourceItemReader<ItemPojo> multiResourceItemReader(){
MultiResourceItemReader<ItemPojo> itemreader = new 
MultiResourceItemReader();
itemreader.setResources(resources);
itemreader.setDelegate(flatFileReader());
} 

在 MultiResourceItemReader 的情况下,任何人都可以建议我如何处理动态块大小。如果需要任何信息,请告诉我谢谢。

【问题讨论】:

  • 你的意思是要在step运行的时候根据当前资源在运行时改变chunk的大小吗?
  • @MahmoudBenHassine 是的,在 JobExecution Listener 中(在 Item 之前)动态设置 Resources Array 并传递给 MultiResourceItem Reader。为了提供更多输入,我已经使用配置的阅读器更新了问题。

标签: java spring spring-boot spring-batch


【解决方案1】:

这是不可能的。您可以在运行时动态设置块大小在执行步骤之前(通过使用后期绑定技术基于作业参数或执行上下文中的属性),但不能在之后 已经开始了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多