当前版本仍在开发中,尚不被视为稳定版本。最新稳定版请使用 Spring Batch 文档 6.0.2!

作业启动网关的可用属性

作业启动网关提供了以下属性,可用于控制作业的启动行为:

  • id:标识底层 Spring Bean 定义。该 Bean 可能是以下任一实例:

    • EventDrivenConsumer

    • PollingConsumer (具体实现取决于该组件的输入通道是 SubscribableChannel 还是 PollableChannel。)

  • auto-startup:布尔标志,表示该端点是否应在启动时自动启动。默认值为 true

  • request-channel:该端点的输入 MessageChannel

  • reply-channel:用于发送结果 JobExecution 负载的 MessageChannel

  • reply-timeout:用于指定该网关在抛出异常之前,等待回复消息成功发送到回复通道的最长时间 (单位为毫秒)。该属性仅在通道可能发生阻塞时生效,例如使用当前已满的有界队列通道时。 另外还要注意,当发送到 DirectChannel 时,调用发生在发送方线程中, 因此发送失败也可能是由更下游的其他组件导致的。 reply-timeout 属性会映射到底层 MessagingTemplate 实例的 sendTimeout 属性。如果未指定,该属性默认值为 -1, 也就是默认情况下,Gateway 会无限期等待。

  • job-launcher:可选。接受一个自定义 JobLauncher Bean 引用。如果未指定,适配器会复用 以 jobLauncherid 注册的实例。 如果不存在默认实例,则会抛出异常。

  • order:当该端点作为订阅者连接到 SubscribableChannel 时,指定其调用顺序。

当该 GatewayPollableChannel 接收消息时, 你必须提供一个全局默认 Poller,或者为 Job Launching Gateway 显式配置一个 Poller 子元素。

  • Java

  • XML

下面的示例展示了如何在 Java 中提供 poller:

Java Configuration
@Bean
@ServiceActivator(inputChannel = "queueChannel", poller = @Poller(fixedRate="1000"))
public JobLaunchingGateway sampleJobLaunchingGateway() {
    JobLaunchingGateway jobLaunchingGateway = new JobLaunchingGateway(jobLauncher());
    jobLaunchingGateway.setOutputChannel(replyChannel());
    return jobLaunchingGateway;
}

下面的示例展示了如何在 XML 中提供 poller:

XML Configuration
<batch-int:job-launching-gateway request-channel="queueChannel"
    reply-channel="replyChannel" job-launcher="jobLauncher">
  <int:poller fixed-rate="1000">
</batch-int:job-launching-gateway>