在Spring中运行Multiple Cron时出现问题。我创建了一个多模块maven项目,其中有两个独立的cron运行,但是在某些时候它们重合,并且从日志中调试变得非常乏味。
是否有任何一种方式可以保存单独的日志,或者在某个cron正在运行时又有某种方式不能启动另一个日志,我的意思是,在某个时间点只能运行一个cron。
@Scheduled(cron="0 0 */2 * * *")
public void startAnalysis() {
logger.info("Inside of Analysis scheduler");
// Doing Something
}
@Scheduled(cron="0 0 */6 * * *")
public void startAnalysis() {
logger.info("Inside of Analysis1 scheduler");
// Doing Something
}
上面是我正在运行的两个混蛋。目前,我正在使用sl4j进行记录。
答案 0 :(得分:1)
您可以创建两个记录器实例,每个实例具有不同的名称,并将它们配置为记录到日志记录框架中的不同文件。
答案 1 :(得分:0)
默认情况下,Spring使用单线程执行器。所以没有两个 @计划的任务将同时执行。即使有两个 完全不相关的类中的@Scheduled方法不会重叠 那是因为只有一个线程可以执行任务。
要同时执行任务的唯一可能性是拥有定义为:
的多线程执行程序。@EnableScheduling
@Configuration
public class MyConfiguration implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar
scheduledTaskRegistrar) {
scheduledTaskRegistrar.setScheduler(taskExecutor());
}
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(5);
}
}
答案 2 :(得分:0)