如何评估在应用程序中是使用spring batch还是scheduler?
Posted
技术标签:
【中文标题】如何评估在应用程序中是使用spring batch还是scheduler?【英文标题】:How to assess whether to use spring batch or scheduler in application? 【发布时间】:2021-01-17 20:53:42 【问题描述】:我已经在 Spring Boot 中开发了一个业务逻辑,需要每 60 天运行一次。我对是否将其转换为 Spring Batch 或使用调度程序注释有点困惑。 我应该考虑哪些所有因素来评估相同?他们中的任何一个都比另一个有优势吗? 我是调度程序批处理概念的新手,这是我第一次从事同样的工作。
【问题讨论】:
【参考方案1】:如何判断应用中是使用spring batch还是scheduler?
Spring Batch 不是调度程序,所以它不是一个非此即彼的问题。您可以同时使用两者,例如使用调度程序来安排 Spring Batch 作业在给定时间运行。
您应该问的问题是:是否值得在 Spring Batch 作业中转换您已经在 Spring Boot 中开发的业务逻辑以从 Spring Batch 提供的功能中受益(整个应用程序可能仍然是启动应用程序)。
附带说明,由于您的作业需要每 60 天运行一次,因此使用 @Scheduled
意味着您需要运行两个月的 JVM 来运行作业。除非您同时计划将相同的 JVM 用于其他事情,否则这将是对资源的低效使用。 cron
等其他调度机制更适合这种情况。
【讨论】:
完美!感谢您让我的理解如此清晰。我认为这让我的生活更轻松,我不需要打扰我现有的 springboot 应用程序。所以为了每 60 天触发一次应用程序运行,我可以使用 crontab 代替,对吗? 我认为 crontab 更适合这样的时间表。现在,如果您同时使用 JVM 来安排其他事情,并且您更喜欢使用@Scheduled
,那么它也可以。选择正确的方法取决于您。如果有帮助,请接受答案。谢谢。以上是关于如何评估在应用程序中是使用spring batch还是scheduler?的主要内容,如果未能解决你的问题,请参考以下文章
Spring-batch:如何在 Spring Batch 中使用 skip 方法捕获异常消息?
如何在 Spring Cloud Data Flow 中为 Spring Batch 作业设置调度程序?
如何确保 SFTP 会话始终在 spring-batch 结束时关闭
如何按特定顺序运行 Spring Batch Jobs(Spring Boot)?