Spring Batch 6.0.0-M2 发布


Spring Batch 6.0.0-M2 现已发布,提供了以下功能和改进:

  • 依赖项升级
  • chunk-oriented 处理模型的新实现
  • 能够恢复突然失败的作业执行

有关完整的更改列表,可查看发行说明。

Dependencies upgrade

在此里程碑版本中,Spring 依赖项升级到以下版本:

  • Spring Framework: 7.0.0-M8
  • Spring Integration: 7.0.0-M2
  • Spring AMQP: 4.0.0-M4
  • Spring Kafka: 4.0.0-M4
  • Spring Data: 4.0.0-M5
  • Spring Ldap: 4.0.0-M2
  • Micrometer: 1.16.0-M2

注意,此版本与 Java 17+ 兼容。

chunk-oriented 处理模型的新实现

这并非新功能,而是对 chunk-oriented 处理模型的全新增强实现。此新实现最初在 5.1 版本中作为实验性新增功能引入,现已在 6.0 版本中作为稳定版本提供。

ChunkOrientedStep类中提供了新的实现,它是ChunkOrientedTasklet/TaskletStep类的替代品。

下面是如何使用其构建器定义ChunkOrientedStep的示例:

@Bean
public Step chunkOrientedStep(JobRepository jobRepository, JdbcTransactionManager transactionManager,
ItemReader<Person> itemReader, ItemProcessor<Person, Person> itemProcessor, ItemWriter<Person> itemWriter) {

int chunkSize = 100;
return new ChunkOrientedStepBuilder<Person, Person>(jobRepository, transactionManager, chunkSize)
.reader(itemReader)
.processor(itemProcessor)
.writer(itemWriter)
.build();
}

此外,fault-tolerance 功能进行了如下调整:

  • 重试功能现在基于 Spring Framework 7 中引入的重试功能,而不是以前的 Spring Retry 库
  • 跳过功能已根据新实现略作调整,现在完全基于SkipPolicyinterface

以下是使用ChunkOrientedStep实现新功能的重试和跳过功能的简单示例:

@Bean
public Step faulTolerantChunkOrientedStep(JobRepository jobRepository, JdbcTransactionManager transactionManager,
ItemReader<Person> itemReader, ItemProcessor<Person, Person> itemProcessor, ItemWriter<Person> itemWriter) {

// retry policy configuration
int maxAttempts = 10;
var retrybaleExceptions = Set.of(TransientException.class);
RetryPolicy retryPolicy = RetryPolicy.builder()
.maxAttempts(maxAttempts)
.includes(retrybaleExceptions)
.build();

// skip policy configuration
int skipLimit = 50;
var skippableExceptions = Set.of(FlatFileParseException.class);
SkipPolicy skipPolicy = new LimitCheckingItemSkipPolicy(skipLimit, skippableExceptions);

// step configuration
int chunkSize = 100;
return new ChunkOrientedStepBuilder<Person, Person>(jobRepository, transactionManager, chunkSize)
.reader(itemReader)
.processor(itemProcessor)
.writer(itemWriter)
.faultTolerant()
.retryPolicy(retryPolicy)
.skipPolicy(skipPolicy)
.build();
}

有关如何从以前的实现迁移到新的实现的更多详细信息,可参阅迁移指南。

恢复失败的作业执行的能力

在 v6 之前,如果作业执行突然失败,除非手动更新数据库,否则无法恢复。这很容易出错,并且在不同的作业存储库之间不一致(因为对于 JDBC 数据库,它需要一些 SQL 语句,而对于 NoSQL 存储,则需要一些自定义语句)。

此里程碑版本引入了JobOperatorinterface 中的一个新方法recover,允许用户在所有作业存储库中一致地恢复失败的作业执行。


相關推薦

2022-11-12

Spring Batch 5.0 发布了第二个 RC 版本。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 此版本包含三项

2023-10-20

(的前两天),相约开源PHP办公室,我们一起聊 AI!>>> Spring Batch 5.1 发布了首个 RC 版本。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至

2022-10-24

Spring Batch 5.0 发布了首个 RC 版本。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 此版本包含两个主

2022-09-24

Spring Batch 5.0.0-M6 和 4.3.7 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 Spring Batch 5.0.0-M6 的

2022-10-06

Spring Batch 5.0.0-M7 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 Spring Batch 5.0.0-M7 的更新内

2022-08-27

这个里程碑的主要主题是改善 Spring Batch 的测试支持。 测试工具配置更新 到 4.3 版本为止, JobLauncherTestUtils 用来自动连接被测 Job,目的是为了方便测试设置。但如果在测试上下文中定义了多个 Job 呢?如果根本就没有定义 Job b

2022-05-23

Spring Batch 发布了 4.3.6 和 5.0.0-M3,前者可从中央仓库获取,后者需要从 https://repo.spring.io/milestone 获取。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发

2023-08-27

26 日「源创会」北京站,聊聊 AI 大模型与底层技术 >>> Spring Batch 多个分支发布了更新,包括: 5.1.0-M2, 5.0.3 和 4.3.9。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨

2022-07-23

Spring Batch 5.0.0-M4 已发布,新版本在支持 Java Records 方面进行了部分改进,以及其他功能增强、错误修复、依赖升级和文档更新。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程

2022-10-15

Spring Batch 5.0.0-M8 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 此版本包含两个主要变

2025-06-14

Spring Framework M6 现已发布,此版本在 7.0.0-M1、7.0.0 - M2、7.0.0 - M3、7.0.0 - M4 和 7.0.0-M5 的基础上提供了新功能和一些改进内容。 “我们对之前里程碑中提供的功能进行了大量改进,但我们也有

2022-06-01

Spring Native 0.12.0 现已发布。此版本包括 12 个 bug 修复、文档改进以及对 GraalVM 22.1、Spring Boot 2.7.0 和 Spring Cloud 2021.0.3 的依赖项升级。 Spring Native(前身为 Spring GraalVM Native,Spring 社区试验性项目)通过使用 GraalVM 原生镜像编

2025-03-22

Spring Boot 3.5.0-M3 现已发布,此版本包含 102 项增强功能、文档改进、依赖项升级和错误修复。 值得注意的新功能包括: Testcontainers 和 Docker Compose 对 lldap/lldap 容器的支持 OpenTelemetry 改进 Spring Batch 的增强功能和新属性

2022-06-25

Spring Boot 为两个分支发布了更新,分别是 2.7.1 和 2.6.9。 更新内容包括修复错误、优化文档以及升级依赖。 v2.7.1 修复使用 HTTP/2 时忽略 Tomcat server.max-http-header-size 属性的问题 #31329 修复 OAuth2 Resource Server Auto-C