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