如何在Java

时间:2018-09-10 10:27:22

标签: spring cron

在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进行记录。

3 个答案:

答案 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)