|
该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用 spring-cloud-task 5.0.0! |
单步批作业Starters
本节将介绍如何开发春季批次工作其中一首单曲步通过使用
Starter 是 Spring Cloud 任务中包含的。这个起始器可以让你使用配置
定义一个物品阅读器一物品写手,或完整的单步春季批次工作.
有关 Spring Batch 及其功能的更多信息,请参见 Spring Batch 文档。
要获得Maven的起始宝可梦,请在你的构建中添加以下内容:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
<version>2.3.0</version>
</dependency>
要获得Gradle的初始宝可梦,请在你的构建中添加以下内容:
compile "org.springframework.cloud:spring-cloud-starter-single-step-batch-job:2.3.0"
定义一份工作
你可以用起始码来定义最小的,比如物品阅读器或物品写手或者说,完全是工作.
本节定义配置工作.
性能
首先,Start提供了一组属性,让你只需一步就能配置作业的基本功能:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
工作名称。 |
|
|
|
台阶的名字。 |
|
|
|
每笔交易需处理的项目数量。 |
配置好上述属性后,你就拥有了一个基于区块的单步作业。
基于分块的步骤负责读取、处理和写入Map<String,对象>实例作为
项目。然而,这一步骤目前还没有任何实际作用。你需要配置一个物品阅读器一
自选物品处理器,以及一个物品写手给它找点事做。配置一个
你可以选择使用属性并配置上述选项
自动配置,或者你也可以用标准的 Spring 配置自己配置
机制。
如果你自己配置,输入和输出类型必须在步骤中匹配。
这物品阅读器实现和物品写手本起始程序中的实现均为
一个Map<String,对象>作为输入和输出项目。 |
ItemReader 实现的自动配置
该Starters提供四种自动配置物品阅读器实现:AmqpItemReader,FlatFileItemReader,JdbcCursorItemReader和卡夫卡物品读者.
在本节中,我们将概述如何利用提供的
自动配置。
AmqpItemReader
你可以用AMQP从队列或话题中读取,方法是使用AmqpItemReader.这
自动配置物品阅读器实现依赖于两组
配置。第一个是Amqp模板.你可以选择
你可以自己配置,或者使用Spring Boot提供的自动配置。请参阅 Spring Boot AMQP 文档。
一旦你配置好Amqp模板你可以启用批处理功能来支持
通过设置以下属性:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
如果 |
|
|
|
表示如果 |
更多信息请参见AmqpItemReader文档.
FlatFileItemReader
FlatFileItemReader你可以从平面文件(比如CSV)读取
以及其他文件格式)。你可以从文件中读取一些组件
通过正常Spring配置 (LineTokenizer,记录分隔器策略,FieldSetMapper,线图仪或跳过线回访).你也可以使用
以下属性用于配置读卡器:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
决定状态是否应保存以备重启。 |
|
|
|
名称用于提供唯一的密钥 |
|
|
|
文件中可读取的最大项目数量。 |
|
|
0 |
已阅读的项目数量。用于重启。 |
|
|
空列表 |
一个字符串列表,表示文件中注释行(可忽略行)。 |
|
|
|
值得阅读的资源。 |
|
|
|
如果设置为 |
|
|
|
读取文件时使用的编码。 |
|
|
0 |
表示文件开头需要跳过的行数。 |
|
|
|
表示文件是否为分隔文件(CSV及其他格式)。仅此财产中的一个或 |
|
|
|
如果读取分隔文件,则表示要解析的分隔符。 |
|
|
|
用于确定引用数值时所用的字符。 |
|
|
空列表 |
一个索引列表,用于确定记录中应包含哪些字段。 |
|
|
|
表示文件记录是否按列号解析。仅此财产中的一个或 |
|
|
空列表 |
解析固定宽度记录的列范围列表。请参阅射击场文档。 |
|
|
|
从记录中解析每个字段的名称列表。这些名称是 |
|
|
|
如果设置为 |
JdbcCursorItemReader
这JdbcCursorItemReader对关系数据库运行查询并进行迭代
得到的光标(结果集)以提供所得的项目。这种自动配置
让你提供PreparedStatementSetter一个行图仪,或者两者兼有。你
还可以利用以下属性来配置JdbcCursorItemReader:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
决定状态是否应保存以备重启。 |
|
|
|
名称用于提供唯一的密钥 |
|
|
|
文件中可读取的最大项目数量。 |
|
|
0 |
已阅读的项目数量。用于重启。 |
|
|
向驱动程序提示,指示每次呼叫数据库系统需要检索多少条记录。为了获得最佳性能,通常你想设置成与区块大小相匹配。 |
|
|
|
数据库中可读取的最大项目数量。 |
|
|
|
查询超时所需的毫秒数。 |
|
|
|
|
判断读取器在处理时是否应忽略 SQL 警告。 |
|
|
|
表示每次读取后是否应验证光标位置以验证 |
|
|
|
表示驱动程序是否支持光标的绝对定位。 |
|
|
|
表示连接是否与其他处理共享(因此属于事务)。 |
|
|
|
SQL查询,可以读取。 |
你也可以通过以下属性专门指定 JDBC 数据源:
.JdbcCursorItemReader性能
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
确定 |
|
|
|
数据库的JDBC网址。 |
|
|
|
数据库用户名登录。 |
|
|
|
数据库的登录密码。 |
|
|
|
JDBCDrivers的完全合格姓名。 |
默认数据来源将被JDBCCursorItemReader如果jdbccursoritemreader_datasource未具体说明。 |
卡夫卡物品读者
从Kafka主题中导入数据分区非常有用,且正是卡夫卡物品读者没问题。要配置一个卡夫卡物品读者,两件
需要配置。首先,使用 Spring Boot 的 Kafka 配置 Kafka
需要自动配置(参见 Spring Boot Kafka 文档)。
一旦你从 Spring Boot 配置好 Kafka 属性,就可以配置卡夫卡物品读者通过设置以下属性来实现自身:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
名称用于提供唯一的密钥 |
|
|
|
阅读主题名称。 |
|
|
空列表 |
可读取的划分索引列表。 |
|
|
30 |
暂停 |
|
|
|
决定状态是否应保存以备重启。 |
参见卡夫卡物品读者文档.
本土汇编
单步批处理的优点是,在使用 JVM 时,你可以动态选择运行时要使用的读写豆。 然而,使用原生编译时,必须在构建时确定读写者,而不是运行时。 以下示例说明了这一点:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>process-aot</id>
<goals>
<goal>process-aot</goal>
</goals>
<configuration>
<jvmArguments>
-Dspring.batch.job.flatfileitemreader.name=fooReader
-Dspring.batch.job.flatfileitemwriter.name=fooWriter
</jvmArguments>
</configuration>
</execution>
</executions>
</plugin>
ItemProcessor 配置
单步批处理作业自动配置接受物品处理器如果只有
可在应用上下文.如果找到合适的类型
(ItemProcessor<Map<String, Object>, Map<String, Object>>),它是自动接线的
进入台阶。
ItemWriter实现的自动配置
该Starters提供自动配置物品写手实现
匹配支持的物品阅读器实现:AmqpItemWriter,平板文件物品写手,JdbcItemWriter和卡夫卡物品作家.本节
介绍如何使用自动配置配置支持物品写手.
AmqpItemWriter
要写入RabbitMQ队列,你需要两组配置。首先,你需要一个Amqp模板.最简单的方法是使用Spring靴
RabbitMQ 自动配置。请参阅 Spring Boot AMQP 文档。
一旦你配置好Amqp模板,你可以配置AmqpItemWriter通过设置
以下性质:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
如果 |
|
|
|
表示 |
平板文件物品写手
如果要写文件作为步骤的输出,可以配置平板文件物品写手.
自动配置接受已显式配置的组件(例如线路聚合器,场提取器,FlatFileHeader回调,或平板文件脚注回调)
通过设置以下属性配置的组件:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
值得阅读的资源。 |
|
|
|
表示输出文件是否为分隔文件。如果 |
|
|
|
表示输出文件是否为格式化文件。如果 |
|
|
|
用于生成格式化文件输出的格式。格式化通过以下方式完成 |
|
|
|
这 |
|
|
0 |
记录的最大长度。如果为0,则大小无界。 |
|
|
0 |
最低唱片长度。 |
|
|
|
这 |
|
|
|
写文件时使用的编码。 |
|
|
|
指示文件是否应在刷新时强制同步到磁盘。 |
|
|
|
从记录中解析每个字段的名称列表。这些名称是 |
|
|
|
如果找到输出文件,表示是否应附加该文件。 |
|
|
|
什么 |
|
|
|
名称用于提供唯一的密钥 |
|
|
|
决定状态是否应保存以备重启。 |
|
|
|
如果设置为 |
|
|
|
如果设置为 |
|
|
|
表示读者是否为事务队列(表示读取的项在失败时返回队列)。 |
参见平板文件物品写手文档.
JdbcBatchItemWriter
为了将步骤的输出写入关系数据库,该起始程序提供了自动配置JdbcBatchItemWriter. 自动配置允许你提供 有ItemPreparedStatementSetter或ItemSqlParameterSourceProvider和 通过设置以下属性来选择配置选项:
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
名称用于提供唯一的密钥 |
|
|
|
插入每个项目的SQL是用来的。 |
|
|
|
是否要验证每次插入至少更新一条记录。 |
你也可以通过以下属性专门指定写入者 JDBC 数据源: .JdbcBatchItemWriter性能
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
确定 |
|
|
|
数据库的JDBC网址。 |
|
|
|
数据库用户名登录。 |
|
|
|
数据库的登录密码。 |
|
|
|
JDBCDrivers的完全合格姓名。 |
默认数据来源将被JdbcBatchItemWriter如果jdbcbatchitemwriter_datasource未具体说明。 |
卡夫卡物品作家
要为Kafka主题写步骤输出,你需要卡夫卡物品作家. 该Starters为卡夫卡物品作家通过使用两个地方的设施。第一个是 Spring Boot 的 Kafka 自动配置。(详见 Spring Boot Kafka 文档。)第二个,这个起始功能允许你在写入器上配置两个属性。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
|
|
|
写作的卡夫卡主题。 |
|
|
|
传递给作者的项目是否都作为删除事件发送到主题。 |
关于配置选项的更多信息卡夫卡物品作家,参见卡夫卡作品维特文档.
春季进攻
在使用 Spring AOT 配合单步批发器时,你必须在编译时设置读者和写入者名称属性(除非你为读写器创建豆子)。为此,你必须包含你希望使用的读写者名称以及 boot maven 插件或 gradle 插件中的参数或环境变量。例如,如果你希望启用FlatFileItemReader和平板文件物品写手在Maven中,它看起来像:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>process-aot</id>
<goals>
<goal>process-aot</goal>
</goals>
</execution>
</executions>
<configuration>
<arguments>
<argument>--spring.batch.job.flatfileitemreader.name=foobar</argument>
<argument>--spring.batch.job.flatfileitemwriter.name=fooWriter</argument>
</arguments>
</configuration>
</plugin>