领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我们很高兴地宣布 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 的 Acuator,上下文不会自行关闭。这导致上下文永远存在,而没有原因。
此默认设置导致了另一个意外的问题。Spring Initializr (https://start.spring.io) 生成的默认项目包含一个启动 ApplicationContext 并验证上下文已加载的单元测试。但是,由于 Spring Cloud Task 在任务完成后以编程方式关闭上下文,因此默认测试用例会在未添加配置属性的情况下失败。
Spring Boot 的 Acuator 不再像最初那样保持上下文打开,因此我们重新审视了 spring.cloud.task.closecontext.enable 的默认值。现在它是 false(之前是 true)。我们预计这不会影响大多数用户,但是,如果您的应用程序需要以编程方式关闭上下文才能关闭,则需要相应地配置此属性。
我们期待您在 Github、StackOverflow、Gitter 或直接通过 Twitter @michaelminella 对这些新功能提出反馈!