单步批处理作业Starters
本节介绍如何开发 Spring BatchJob
使用单个Step
通过使用
starter 包含在 Spring Cloud Task 中。此 Starter 允许您使用配置
要定义ItemReader
一ItemWriter
或完整的单步 Spring BatchJob
.
有关 Spring Batch 及其功能的更多信息,请参阅 Spring Batch 文档。
要获取 Maven 的 starter,请将以下内容添加到您的构建中:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
<version>2.3.0</version>
</dependency>
要获取 Gradle 的 starter,请将以下内容添加到您的构建中:
compile "org.springframework.cloud:spring-cloud-starter-single-step-batch-job:2.3.0"
13. 定义作业
您可以使用 starter 定义ItemReader
或ItemWriter
或多达一个完整的Job
.
在本节中,我们将定义配置Job
.
13.1. 属性
首先,Starter 提供了一组属性,允许您通过一个 Step 配置 Job 的基础知识:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
作业的名称。 |
|
|
|
步骤的名称。 |
|
|
|
每个交易要处理的项目数。 |
配置上述属性后,您将拥有一个具有单个基于块的步骤的作业。
此基于数据块的步骤读取、处理和写入Map<String, Object>
实例作为
项目。但是,该步骤尚未执行任何作。您需要配置ItemReader
一
自选ItemProcessor
和ItemWriter
给它一些事情做。配置一个
其中,您可以使用 properties 并配置已提供的
auto配置,或者您可以使用标准的 Spring 配置来配置自己的
机制。
如果您配置自己的类型,则输入和输出类型必须与步骤中的其他类型匹配。
这ItemReader implementations 和ItemWriter 此 Starter 中的 implementations 都使用
一个Map<String, Object> 作为 Input 和 Output 项。 |
14. ItemReader 实现的自动配置
此Starters为四种不同的ItemReader
实现:AmqpItemReader
,FlatFileItemReader
,JdbcCursorItemReader
和KafkaItemReader
.
在本节中,我们将概述如何使用提供的
autoconfiguration 的
14.1. AmqpItemReader
您可以使用 AMQP 从 AMQP 的队列或主题中读取AmqpItemReader
.这
autoconfiguration 的ItemReader
implementation 依赖于两组
配置。第一个是AmqpTemplate
.您可以
自己配置或使用 Spring Boot 提供的自动配置。请参阅 Spring Boot AMQP 文档。
配置AmqpTemplate
中,您可以启用 Batch 功能来支持它
通过设置以下属性:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
如果 |
|
|
|
指示 |
有关更多信息,请参阅AmqpItemReader
文档.
14.2. FlatFileItemReader
FlatFileItemReader
允许您从平面文件(如 CSV
和其他文件格式)。要从文件中读取数据,您可以提供一些组件
您自己通过正常的 Spring 配置 (LineTokenizer
,RecordSeparatorPolicy
,FieldSetMapper
,LineMapper
或SkippedLinesCallback
).您还可以使用
以下属性来配置读取器:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
确定是否应保存状态以供重新启动。 |
|
|
|
名称 用于在 |
|
|
|
要从文件中读取的最大项目数。 |
|
|
0 |
已读取的项目数。在重新启动时使用。 |
|
|
空列表 |
一个 Strings 列表,指示文件中的注释行(要忽略的行)。 |
|
|
|
要读取的资源。 |
|
|
|
如果设置为 |
|
|
|
读取文件时要使用的编码。 |
|
|
0 |
指示在文件开头要跳过的行数。 |
|
|
|
指示文件是否为带分隔符的文件 (CSV 和其他格式)。只有此属性之一或 |
|
|
|
如果读取分隔文件,则指示要解析的分隔符。 |
|
|
|
用于确定用于引用值的字符。 |
|
|
空列表 |
一个索引列表,用于确定要包含在项目中的记录中的哪些字段。 |
|
|
|
指示是否按列号解析文件的记录。只有此属性之一或 |
|
|
空列表 |
用于解析固定宽度记录的列范围列表。请参阅 Range 文档。 |
|
|
|
从记录中解析的每个字段的名称列表。这些名称是 |
|
|
|
如果设置为 |
14.3. JdbcCursorItemReader的
这JdbcCursorItemReader
对关系数据库运行查询并迭代
生成的游标 (ResultSet
) 以提供生成的项。此 autoconfiguration
允许您提供PreparedStatementSetter
一个RowMapper
和/或两者。你
还可以使用以下属性来配置JdbcCursorItemReader
:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
确定是否应保存状态以供重新启动。 |
|
|
|
名称 用于在 |
|
|
|
要从文件中读取的最大项目数。 |
|
|
0 |
已读取的项目数。在重新启动时使用。 |
|
|
对驱动程序的提示,用于指示每次调用数据库系统要检索的记录数。为了获得最佳性能,您通常需要将其设置为与 chunk 大小匹配。 |
|
|
|
要从数据库中读取的最大项目数。 |
|
|
|
查询超时的毫秒数。 |
|
|
|
|
确定读取器在处理时是否应忽略 SQL 警告。 |
|
|
|
指示是否应在每次读取后验证游标的位置,以验证 |
|
|
|
指示驱动程序是否支持游标的绝对定位。 |
|
|
|
指示连接是否与其他处理共享(因此是事务的一部分)。 |
|
|
|
要从中读取的 SQL 查询。 |
14.4. KafkaItemReader
从 Kafka 主题中提取数据分区非常有用,而这正是KafkaItemReader
可以做到。要配置KafkaItemReader
、两件
的配置是必需的。首先,使用 Spring Boot 的 Kafka 配置 Kafka
autoconfiguration 是必需的(请参阅 Spring Boot Kafka 文档)。
从 Spring Boot 配置 Kafka 属性后,您可以配置KafkaItemReader
本身:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
名称 用于在 |
|
|
|
要从中读取的主题的名称。 |
|
|
空列表 |
要从中读取的分区索引列表。 |
|
|
30 |
超时 |
|
|
|
确定是否应保存状态以供重新启动。 |
15. ItemProcessor 配置
单步批处理作业自动配置接受ItemProcessor
如果一个
在ApplicationContext
.如果找到正确类型的
(ItemProcessor<Map<String, Object>, Map<String, Object>>
),则它是自动装配的
进入步骤。
16. ItemWriter 实现的自动配置
此 starter 为ItemWriter
实现
匹配支持的ItemReader
实现:AmqpItemWriter
,FlatFileItemWriter
,JdbcItemWriter
和KafkaItemWriter
.本节
介绍如何使用 autoconfiguration 配置支持的ItemWriter
.
16.1. AmqpItemWriter
要写入 RabbitMQ 队列,您需要两组配置。首先,您需要一个AmqpTemplate
.最简单的方法是使用 Spring Boot 的
RabbitMQ 自动配置。请参阅 Spring Boot RabbitMQ 文档。
配置AmqpTemplate
中,您可以配置AmqpItemWriter
通过设置
以下属性:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
如果 |
|
|
|
指示 |
16.2. FlatFileItemWriter
要将文件写入步骤的输出,您可以配置FlatFileItemWriter
.
自动配置接受已明确配置的组件(例如LineAggregator
,FieldExtractor
,FlatFileHeaderCallback
或FlatFileFooterCallback
) 和
通过设置指定的以下属性来配置的组件:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
要读取的资源。 |
|
|
|
指示输出文件是否为带分隔符的文件。如果 |
|
|
|
指示输出文件是否为格式化文件。如果 |
|
|
|
用于为格式化文件生成输出的格式。格式化是使用 |
|
|
|
这 |
|
|
0 |
记录的最大长度。如果为 0,则大小不受限制。 |
|
|
0 |
最小记录长度。 |
|
|
|
这 |
|
|
|
写入文件时要使用的编码。 |
|
|
|
指示是否应在刷新时将文件强制同步到磁盘。 |
|
|
|
从记录中解析的每个字段的名称列表。这些名称是 |
|
|
|
指示在找到输出文件时是否应追加文件。 |
|
|
|
什么 |
|
|
|
名称 用于在 |
|
|
|
确定是否应保存状态以供重新启动。 |
|
|
|
如果设置为 |
|
|
|
如果设置为 |
|
|
|
指示读取器是否为事务性队列(指示读取的项目在失败时返回到队列)。 |
16.3. JdbcBatchItemWriter
要将步骤的输出写入关系数据库,此Starters提供了以下功能
要自动配置JdbcBatchItemWriter
.自动配置允许您提供
有ItemPreparedStatementSetter
或ItemSqlParameterSourceProvider
和
配置选项:
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
名称 用于在 |
|
|
|
用于插入每个项目的 SQL。 |
|
|
|
是否验证每个插入是否导致至少更新一条记录。 |
16.4. KafkaItemWriter
要将步骤输出写入 Kafka 主题,您需要KafkaItemWriter
.这个Starters
为KafkaItemWriter
通过使用两个地方的设施。
第一个是 Spring Boot 的 Kafka 自动配置。(请参阅 Spring Boot Kafka 文档。
其次,此 starter 允许您在 writer 上配置两个属性。
财产 | 类型 | 默认值 | 描述 |
---|---|---|---|
|
|
|
要写入的 Kafka 主题。 |
|
|
|
传递给编写器的项目是否全部作为 delete 事件发送到主题。 |
有关KafkaItemWriter
,请参阅KafkaItemWiter
文档.