将多个侦听器添加到 Spring 批处理步骤时出现编译错误

Posted

技术标签:

【中文标题】将多个侦听器添加到 Spring 批处理步骤时出现编译错误【英文标题】:Compilation error when adding multiple listeners to Spring batch Step 【发布时间】:2020-02-12 17:53:20 【问题描述】:

向 Step 添加多个侦听器会导致编译错误。

    private Step myStep(DataSource dataSource) 
        return stepBuilderFactory.get("myStep")
            .<Record, Record>chunk(100)
            .reader(reader)
            .processor(processor)
            .writer(writer)
            .faultTolerant()
            .listener(stepListener)
            .listener(skipListener)
            .build();

[ERROR] 找不到符号 [ERROR] 符号:方法 build() [错误]位置:类 org.springframework.batch.core.step.builder.StepBuilderHelper

如果我删除了其中一个侦听器,代码就会编译。如何将步骤侦听器和跳过侦听器添加到 Spring Batch 中的容错步骤?

使用 Spring Boot 2.1.8-RELEASE 和 Spring Batch 启动器。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
</parent>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

【问题讨论】:

【参考方案1】:

实现此目的的一种方法如下,虽然不理想,但可以。

SimpleStepBuilder<Record, Record> builder = stepBuilderFactory.get("myStep")
            .<Record, Record>chunk(100)
            .reader(reader)
            .processor(processor)
            .writer(writer)
            .faultTolerant();
    builder.listener(skipListener);
    builder.listener(stepListener);
    return builder.build();

【讨论】:

以上是关于将多个侦听器添加到 Spring 批处理步骤时出现编译错误的主要内容,如果未能解决你的问题,请参考以下文章

运行弹簧批处理作业的多个实例时出现死锁

将 OAuth2 添加到 spring-boot 时出现 CSRF-token 错误

将 spring-cloud-sleuth 添加到类路径时出现“上下文初始化”错误

使用 Spotipy 将曲目添加到播放列表时出现多个错误

使用队列和侦听器登录到控制台时出现意外行为

Groovy:使用 Grails 和 Spring 安全核心插件时出现意外令牌