ale*_*oid 4 cron spring spring-scheduled spring-boot
在我的Spring Boot应用程序中,基于Cron作业(每5分钟运行一次),我需要在数据库中处理2000种产品。
目前,这2000种产品的处理时间超过5分钟。我遇到了一个问题,当第一个Cron作业尚未完成时,第二个Cron作业将运行。
Spring / Cron中是否具有开箱即用的功能,该功能可以同步这些作业并等待上一个作业完成后再开始下一个作业?
请告知如何正确实施此类系统。无论如何,Neo4j,MongoDB,Kafka也可以使用以下技术。请告知如何单独或什至与上述技术一起使用Spring / Cron正确设计/实现此功能。
1)您可以尝试使用@Scheduled(fixedDelay = 5*60*1000)。这将确保下一次调用将严格在上一次完成后的5分钟内发生。但这可能会破坏您的计划要求
2)您可以将基础ThreadExecutor的池大小限制为1个线程,因此下一次调用将不得不等待上一个线程完成,但这又会破坏逻辑,因为这将影响由ThreadExecutor调用的所有定期任务 @Scheduled
3)您可以使用Quartz代替spring的native @Scheduled。配置起来比较复杂,但是可以通过@DisallowConcurrentExecution注释或通过JobDetail::isConcurrentExectionDisallowed在工作详细信息中进行设置来实现所需的行为
| 归档时间: |
|
| 查看次数: |
1209 次 |
| 最近记录: |