|
该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用 spring-cloud-task 5.0.0! |
春云流集成
任务本身可能有用,但将任务整合进更大的生态系统则使它能够实现 对于更复杂的处理和编排非常有用。本节 介绍了Spring Cloud Task与Spring Cloud Stream的集成选项。
从春季云流启动任务
你可以从流中启动任务。为此,创建一个接收消息的汇入槽
包含一个任务发射请求作为其有效载荷。这任务发射请求包含:
-
乌里:到待执行的任务工件上。 -
applicationName:与任务相关的名称。如果没有 applicationName 是设置的,是任务发射请求生成任务名称 包括以下内容:任务-<UUID>. -
commandLineArguments:包含任务命令行参数的列表。 -
环境属性:包含将要用于 任务。 -
deploymentProperties:一个包含部署器用于 的属性的映射 部署任务。
| 如果有效载荷类型不同,汇会抛出异常。 |
例如,可以创建一个流,其处理器接收来自
HTTP 源并创建通用消息包含任务发射请求并发送
消息发送到其输出信道。任务汇随后会从其
输入通道,然后启动任务。
要创建 taskSink,你只需创建一个包含EnableTaskLauncher注释,如下示例所示:
@SpringBootApplication
@EnableTaskLauncher
public class TaskSinkApplication {
public static void main(String[] args) {
SpringApplication.run(TaskSinkApplication.class, args);
}
}
采样
Spring Cloud Task 项目的模块包含一个示例的 Sink 和 Processor。安装
这些样本会导入你本地的 Maven 仓库,运行一个 Maven 构建春云任务样本目录skip安装属性设置为false如
如下例所示:
MVN 干净安装
这maven.remoteRepositories.springRepo.url属性必须设置为
Spring Boot Uber-jar所在的远程仓库。如果未设置,则没有遥控器
因此它仅依赖本地仓库。 |
春云数据流
要在 Spring Cloud Data Flow 创建数据流,首先必须注册任务汇 我们创建的应用程序。在下面的例子中,我们注册处理器和 通过使用 Spring Cloud Data Flow shell 进行汇取示例应用:
app register --name taskSink --type sink --uri maven://io.spring.cloud:tasksink:<version>
app register --name taskProcessor --type processor --uri maven:io.spring.cloud:taskprocessor:<version>
以下示例展示了如何从 Spring Cloud 数据流 shell 创建流:
stream create foo --definition "http --server.port=9000|taskProcessor|taskSink" --deploy
春云任务活动
Spring Cloud Task提供通过Spring Cloud流发送事件的能力
当任务通过Spring Cloud Stream频道执行时。任务监听器是
用于出版任务执行在一个名为任务事件.此功能
自动接线到任何具有春云溪流,春-云-溪-<>,
以及其类路径上的定义任务。
要禁用事件发射监听器,请设置spring.cloud.task.events.enabled属性到false. |
在定义了相应的类路径后,以下任务会输出任务执行作为
活动任务事件通道(任务开始和结束时):
@SpringBootApplication
public class TaskEventsApplication {
public static void main(String[] args) {
SpringApplication.run(TaskEventsApplication.class, args);
}
@Configuration
public static class TaskConfiguration {
@Bean
public ApplicationRunner applicationRunner() {
return new ApplicationRunner() {
@Override
public void run(ApplicationArguments args) {
System.out.println("The ApplicationRunner was executed");
}
};
}
}
}
| 绑定器实现也必须在类路径上。 |
| 示例任务事件应用可在示例模块中找到 春云任务项目的介绍,在这里。 |
Spring Session活动
当通过任务执行 Spring Batch 作业时,Spring Cloud 任务可以配置为 根据春季批次中可用的听众数量发送信息信息。 具体来说,每个批处理作业中自动配置了以下的 Spring Batch 监听器 并在Spring运行时,在相关的Spring云流频道上发送消息 云端任务:
-
JobExecutionListener倾听作业-执行-事件 -
StepExecutionListener倾听步骤执行事件 -
ChunkListener(分块听众)倾听区块事件 -
项目阅读听者倾听项目-读取-事件 -
ItemProcessListener倾听项目-过程-事件 -
ItemWriteListener倾听物品-写入-事件 -
跳过听众倾听跳过事件
这些监听器会自动配置为任意摘要工作当适当时
Beans(a工作以及一个任务生命周期监听器)存在于语境中。配置为
收听这些事件的处理方式与其他春季绑定相同
Cloud Stream 频道已经完成了。我们的任务(运行批处理作业的任务)作为一个源,监听应用作为以下几个处理器或者沉.
一个例子是,应用程序监听作业-执行-事件渠道
为了工作开始和结束。要配置监听应用,你会
将输入配置为作业-执行-事件如下:
spring.cloud.stream.bindings.input.destination=job-execution-events
| 绑定器实现也必须在类路径上。 |
| 批处理事件的示例应用可在样本模块中找到 春云任务项目的介绍,在这里。 |
向不同通道发送批处理事件
Spring Cloud Task为批处理事件提供的选项之一是能够更改
特定听众可以向其发送消息的通道。为此,可以使用
配置如下:spring.cloud.stream.bindings.<the channel>.destination=<new destination>.例如
如果StepExecutionListener需要将消息发送到另一个名为我的步执行事件而不是默认步骤执行事件,你可以添加
配置如下:
spring.cloud.task.batch.events.step-execution-events-binding-name=my-step-execution-events。
禁用批处理事件
要禁用所有批处理事件的监听器功能,请使用以下方式 配置:
spring.cloud.task.batch.events.enabled=false
要禁用特定的批处理事件,请使用以下配置:
spring.cloud.task.batch.events.<batch event listener>.enabled=false:
以下列表显示了您可以禁用的个人听众:
spring.cloud.task.batch.events.job-execution.enabled=false
spring.cloud.task.batch.events.step-execution.enabled=false
spring.cloud.task.batch.events.chunk.enabled=false
spring.cloud.task.batch.events.item-read.enabled=false
spring.cloud.task.batch.events.item-process.enabled=false
spring.cloud.task.batch.events.item-write.enabled=false
spring.cloud.task.batch.events.skip.enabled=false
批次事件的发射顺序
默认情况下,批处理事件有Ordered.LOWEST_PRECEDENCE.要改变该值(对于
例如,对5),使用以下配置:
spring.cloud.task.batch.events.job-execution-order=5
spring.cloud.task.batch.events.step-execution-order=5
spring.cloud.task.batch.events.chunk-order=5
spring.cloud.task.batch.events.item-read-order=5
spring.cloud.task.batch.events.item-process-order=5
spring.cloud.task.batch.events.item-write-order=5
spring.cloud.task.batch.events.skip-order=5