java - Spring Batch 自定义 ItemReader 无法打开

标签 java spring spring-batch

我有一个 Spring Batch 项目,其中有 JsonResouurceAsyncPagingItemReader,这是一个自定义 ItemReader,它从 Web 服务异步检索数据。

此自定义 ItemReader 使用 ExecutorService 提交对 Web 服务的调用。但是我在初始化它时遇到了麻烦。

我尝试通过 AbstractItemCountingItemStreamItemReader 提供的 doOpen 方法初始化它,但是似乎 doOpen 它没有被调用。

Spring 通过以下方式注入(inject) ItemReader:

@Bean
@JobScope
public ItemReader<Map<String, Object>> reader(@Value("#{jobParameters['lastRun']}") Date lastRun,
        @Value("#{jobParameters['codInt']}") Long codInt) {

    Map<String, Object> parameterValues = new HashMap<String, Object>();
    if (lastRun != null) {
        parameterValues.put("lastRun", DateFormatUtils.format(lastRun, dateFormat));
    }
    if (codInt != null) {
        parameterValues.put("codInt", codInt);
    }

    JsonResourceAsyncPagingItemReader<Map<String, Object>> reader = new JsonResourceAsyncPagingItemReader<>();
    reader.setHttpUrl(server + pathTemplate);
    reader.setRestTemplate(restTemplate);
    reader.setParameterValues(parameterValues);
    reader.setPageSize(pageSize);

    return reader;
}

并进一步在Step中使用,如下所示:

@Bean
public Step importProductStep() {
    return stepBuilderFactory.get("importProductJobStep")
            .<Map<String, Object>, Product>chunk(1000)
            .reader(reader(null, null))
            .processor(processor())
            .writer(writer())
            .build();
}

知道可能出了什么问题吗?

最佳答案

如果您返回一个 ItemStream 或一个 ItemStreamWriter,那就应该没问题。
(Look at this ticket)

关于java - Spring Batch 自定义 ItemReader 无法打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41353114/

相关文章:

java - 如何设置MongoTemplate集合映射

java - 如何根据一个值更新表的多行?

java - 如何使用 Maven 创建具有依赖项的可执行/可运行 JAR?

java - BeanCreationException NoSuchBeanDefinitionException 在为以下 Spring 代码启动 Google App Server 时

java - 简单 Spock 测试中的日志记录级别没有变化

java - 从 Java 代码调用 Spring Batch

java - Spring-Batch:如何从StepListener返回自定义Job退出代码

java - DFS over string trie (前缀)

java - 为什么我的Java应用程序每次编译数据库包后都需要重新启动?

java - Mockito,模拟并更改 Calendar.getIstance()