提供信息信息反馈

因为春批作业可以运行较长时间,从而提供进展 信息往往至关重要。例如,利益相关者可能希望 如果批处理作业的部分或全部部分失败,将收到通知。 Spring Batch 为收集这些信息提供了支持 通过:spring-doc.cadn.net.cn

在异步启动春批作业时(例如,使用作业启动) 门户),a作业执行实例被返回。因此,你可以使用JobExecution.getJobInstanceId()通过检索更新的实例,持续轮询状态更新作业执行来自JobRepository通过使用JobExplorer.然而,这个 被认为是次优方法,更倾向于事件驱动的方法。spring-doc.cadn.net.cn

因此,春批为听众提供了包括最常用的三种听众 听众:spring-doc.cadn.net.cn

在下图示例中,一个 Spring Batch 作业被配置为StepExecutionListener.因此,Spring Integration 会接收并处理之前的任何步骤 或者事后。例如,你可以检查收到的步执行通过使用路由器.根据检查结果,可能会发生各种情况(例如: 将消息路由到邮件外发通道适配器),以便电子邮件通知能够 根据某种条件被派遣。spring-doc.cadn.net.cn

处理信息性消息
图1。处理信息性消息

以下两部分示例展示了监听者如何配置发送 致网关对于步执行事件并记录其输出为日志通道适配器.spring-doc.cadn.net.cn

首先,创建通知集成豆。spring-doc.cadn.net.cn

以下示例展示了如何在 Java 中创建通知集成 Beans:spring-doc.cadn.net.cn

Java 配置
@Bean
@ServiceActivator(inputChannel = "stepExecutionsChannel")
public LoggingHandler loggingHandler() {
    LoggingHandler adapter = new LoggingHandler(LoggingHandler.Level.WARN);
    adapter.setLoggerName("TEST_LOGGER");
    adapter.setLogExpressionString("headers.id + ': ' + payload");
    return adapter;
}

@MessagingGateway(name = "notificationExecutionsListener", defaultRequestChannel = "stepExecutionsChannel")
public interface NotificationExecutionListener extends StepExecutionListener {}
你需要添加@IntegrationComponentScan对你的配置进行注释。

以下示例展示了如何用XML创建通知集成豆子:spring-doc.cadn.net.cn

XML 配置
<int:channel id="stepExecutionsChannel"/>

<int:gateway id="notificationExecutionsListener"
    service-interface="org.springframework.batch.core.listener.StepExecutionListener"
    default-request-channel="stepExecutionsChannel"/>

<int:logging-channel-adapter channel="stepExecutionsChannel"/>

其次,修改你的工作,增加一个步级监听器。spring-doc.cadn.net.cn

以下示例展示了如何在 Java 中添加步级监听器:spring-doc.cadn.net.cn

Java 配置
public Job importPaymentsJob(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
    return new JobBuilder("importPayments", jobRepository)
        .start(new StepBuilder("step1", jobRepository)
                .chunk(200, transactionManager)
                .listener(notificationExecutionsListener())
                // ...
                .build();
              )
        .build();
}

以下示例展示了如何在 XML 中添加步级监听器:spring-doc.cadn.net.cn

XML 配置
<job id="importPayments">
    <step id="step1">
        <tasklet ../>
            <chunk ../>
            <listeners>
                <listener ref="notificationExecutionsListener"/>
            </listeners>
        </tasklet>
        ...
    </step>
</job>