Spring Cloud Task 2.3.0-M1 现已发布!

版本发布 | Michael Minella | 2020年5月11日 | ...

我们很高兴地宣布 Spring Cloud Task 2.3.0-M1 现已在 Github 和 Spring 下载仓库中可用。非常感谢所有为本次发布做出贡献的人。

新特性?

Spring Cloud Task 2.3.0-M1 旨在与 Spring Boot 2.3 对齐。从 2.2.x 开始的更新包括

  • 更新了所有依赖。
  • 支持指定 Spring Cloud Task 使用的 PlatformTransactionManager
  • 一个用于单步骤 Spring Batch 作业的启动器。

让我们更详细地了解这些更新。

更新所有依赖

如前所述,这是第一个使 Spring Cloud Task 与 Spring Boot 2.3 对齐的里程碑版本。这包括更新所有依赖项以与 Spring Boot 和 Spring Cloud 对齐。

支持指定 Spring Cloud Task 使用的 PlatformTransactionManager

当使用多个 DataSource 时,Spring Cloud Task 提供了指定框架的 TaskRepository 应使用哪个 DataSource 的功能。然而,以前没有简单的方法来配置使用哪个 PlatformTransactionManager。本次发布现在公开了更新,允许为框架使用的 PlatformTransactionManager 进行特定配置。

单步骤批处理作业启动器

Spring Cloud Task 2.3 功能扩展的一个领域是增加了一个启动器,它将允许用户仅通过属性配置单步骤 Spring Batch 作业。本次发布包含通过属性配置作业的功能,可以通过属性从平面文件读取和写入。让我们看看一个示例来了解它是如何工作的。

要使用此启动器,首先将其作为依赖项添加到您的 Spring Boot 项目中,如下所示

...
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
	<version>2.3.0-M1</version>
</dependency>
...
<repository>
	<id>Spring Milestone</id>
	<url>https://repo.spring.io/lib-milestones-local/</url>
</repository>

...
maven { url 'https://repo.spring.io/lib-milestones-local/' }
...
compile "org.springframework.cloud:spring-cloud-starter-single-step-batch-job:2.3.0-M1"
...

将启动器添加到您的项目后(假设您已经创建了带有 @EnableBatchProcessing 注解的 Spring Boot main 类),您唯一需要做的其他工作就是配置您的作业。假设您有以下输入文件

customer1,100
customer2,101
customer3,102
customer4,103
customer5,104
customer6,105
customer7,106
customer8,107
customer9,108

在上面的输入文件中,CSV 的第一列是客户名称,第二列是余额。如果我们想配置一个作业来读取文件并通过反转列来重新格式化它,我们将创建一个 application.yml,如下所示

spring:
  batch:
      job:
        jobName: sample
        stepName: step1
        chunkSize: 5
        flatfilereader:
          delimited: true
          names: customer,number
          name: itemReader
          resource: /input.csv
        flatfilewriter:
          formatted: true
          format: "%s has a balance of %s"
          name: itemWriter
          names: customer,number
          resource: file:///tmp/output.txt

如果您熟悉 Spring Batch,此配置对您来说应该很熟悉。我们首先定义作业的名称以及其中步骤的名称。我们还提供一个块大小 (chunk size) 来指示每个事务要处理多少条记录。然后,我们为我们的步骤配置一个 ItemReaderItemWriter(分别为 FlatFileItemReaderFlatFileItemWriter)。如果我们愿意,我们还可以实现一个 ItemProcessor,启动器会自动将其注入到我们的步骤中。

配置完成后,我们的批处理作业将读取文件并按请求的格式写入。上面示例文件的输出将如下所示

customer1 has a balance of 100
customer2 has a balance of 101
customer3 has a balance of 102
customer4 has a balance of 103
customer5 has a balance of 104
customer6 has a balance of 105
customer7 has a balance of 106
customer8 has a balance of 107
customer9 has a balance of 108

该里程碑版本包括 FlatFileItemReaderFlatFileItemWriter 的自动配置。对于我们的 GA 版本(计划于今年晚些时候发布),我们期望以下所有选项都作为自动配置选项提供

  • FlatFileItemReader
  • FlatFileItemWriter
  • JdbcPagingItemReader
  • JdbcCursorItemReader
  • JdbcBatchItemWriter
  • KafkaItemReader
  • KafkaItemWriter
  • AmqpItemReader
  • AmqpItemWriter

如果您认为还有其他应该列入清单的选项,请务必在 Github 上告诉我们!

您怎么看?

我们期待您在 Github, StackOverflow, Gitter 或直接在 Twitter 上 @michaelminella 提供关于这些新功能的反馈!

Spring Cloud Task 主页 | GitHub 上的源码 | 参考文档

订阅 Spring 邮件列表

通过 Spring 邮件列表保持联系

订阅

领先一步

VMware 提供培训和认证,助力您的快速发展。

了解更多

获取支持

Tanzu Spring 通过一个简单的订阅提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部