Spring Cloud Task 2.0.0.M3 现已发布

版本发布 | Michael Minella | 2018年2月14日 | ...

我们很高兴地宣布,Spring Cloud Task 2.0.0.M3 现已在 Github 和 Pivotal 下载仓库中提供。非常感谢所有为本次发布做出贡献的人。

有哪些新特性?

本次发布包含了现有依赖的升级,以及面向 Spring Cloud Task 用户的一些令人兴奋的新特性。从依赖角度来看,Spring Cloud Task 2.0.0.M3 已升级到使用 Spring Boot 2.0.0.RC1 堆栈以及 Spring Cloud 的 Finchley M6 依赖。

除了依赖升级之外,Spring Cloud Task 2.0.0.M3 中还有许多新特性。让我们一起来看看。

限制任务实例

由于 Spring Cloud Task 不负责编排,因此很难阻止同一任务的多个实例同时执行。然而,对于数据库迁移等场景,这是一个重要的用例。本次发布添加了一个监听器,可用于防止任务的多个实例同时执行。通过使用 Spring Integration 的分布式锁 功能,监听器会在启动时尝试获取锁。如果成功,任务将继续执行。如果任务无法获取锁,任务将失败。

批处理作业导致任务失败

Spring Boot 提供了在启动时执行 Spring Batch 作业的功能,这非常方便。然而,如果在 Spring Cloud Task 的范围内有一个作业失败,任务仍然会被标记为成功,因为 Spring Cloud Task 无法知道作业失败了(JobLauncherCommandLineRunner 不会抛出异常)。本次发布引入了当任务内的作业失败时,任务也被标记为失败的功能。您可以通过将 spring.cloud.task.batch.failOnJobFailure 属性设置为 true 来启用此功能。

重要默认设置的更新

当 Spring Cloud Task 首次推出时,它默认会在任务完成时以编程方式关闭 ApplicationContext。之所以设置为默认,是因为当时如果你使用 Spring Boot 的 Actuator,上下文不会自动关闭。这导致上下文会永远存活,没有理由关闭。

这个默认设置导致了另一个意外的问题。Spring Initializr (https://start.spring.io) 生成的默认项目包含一个单元测试,该测试引导 ApplicationContext 并验证上下文是否已加载。然而,由于 Spring Cloud Task 在任务完成后会以编程方式关闭上下文,因此如果没有添加配置属性,该默认测试用例就会失败。

Spring Boot 的 Actuator 不再像最初那样保持上下文打开,因此我们重新审视了 spring.cloud.task.closecontext.enable 的默认值。它现在是 false(之前是 true)。我们不期望这会影响大多数用户,但是,如果您的应用程序需要以编程方式关闭上下文才能终止,您需要相应地配置此属性。

您怎么看?

我们期待您在 GithubStackOverflowGitter 上或通过 Twitter @michaelminella 直接提供关于这些新特性的反馈!

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

获取 Spring 新闻通讯

订阅 Spring 新闻通讯保持联系

订阅

先行一步

VMware 提供培训和认证,助您快速提升。

了解更多

获取支持

Tanzu Spring 通过一份简单订阅,即可为 OpenJDK™、Spring 和 Apache Tomcat® 提供支持和二进制文件。

了解更多

近期活动

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

查看全部