Spring Boot,Cron作业同步
作者:互联网
在我的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个线程,因此下一次调用必须等到上一次完成,但这又会破坏逻辑,因为它会影响@Scheduled调用的所有周期性任务
3)您可以使用Quartz而不是spring的原生@Scheduled.配置更复杂,但允许通过@DisallowConcurrentExecution批注或通过在作业详细信息中设置JobDetail :: isConcurrentExectionDisallow来实现所需的行为
标签:spring,spring-boot,cron,spring-scheduled 来源: https://codeday.me/bug/20190828/1749138.html