Spring Batch 中 Scheduler 定时任务

作者: 金色木叶枫 | 来源:发表于2016-05-14 13:52 被阅读6299次

    Spring batch 是一个优秀的专业的批处理框架,但是并不是一个任务调度框架。但是Spring 中也带有一个轻量级的Scheduler来帮助我们做一些事情。除此之外我们还可以选择比较有效的任务调度框架Quartz [quartz ] 可以很好的与Spring Batch 进行结合做一些更加优秀的东西。对于刚刚开始我选择用Spring 自带的轻量级的Scheduler来做个简单的demo,后续将会引入quartz来做一些东西。

    这里简单配置一个job任务来讲述如何使用
    此处spring batch 的reader process writer三个部分的配置在此省略,但是不影响定时任务执行的效果

    job_context.xml

    <beans    
        xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns:batch="http://www.springframework.org/schema/batch"        xmlns:task="http://www.springframework.org/schema/task"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> 
       <!-- Import our beans -->  
      <import resource="classpath:/applicationContext.xml"/> 
       <batch:job id="job1"> 
           <batch:step id="importFileStep">    
            <tasklet>           
                  <chunk reader="productReader" writer="productWriter" commit-interval="5"/>    
            </tasklet>   
         </batch:step>  
      </batch:job>
       <!--执行器-->
        <bean id="runScheduler" class="com.sushou.demo.BatchJob" />   
    <!--定时任务  每5秒执行一次-->               
       <task:scheduled-tasks> 
           <task:scheduled ref="runScheduler" method="run" cron="*/5 * * * * *" />  
      </task:scheduled-tasks>
    </beans>
    

    运行定时任务

    BatchJob.java

    package com.sushou.demo;
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.JobExecution;
    import org.springframework.batch.core.JobParameters;
    import org.springframework.batch.core.JobParametersBuilder;
    import org.springframework.batch.core.launch.JobLauncher;
    import org.springframework.beans.factory.annotation.Autowired;
    import java.util.Date;
    /** * Created by maple on 16/5/14. */
    public class BatchJob {    
      @Autowired   
      private JobLauncher jobLauncher;  
      @Autowired
      private Job job;  
    
      public void run() {       
             try {          
                  String dateParam = new Date().toString();       
                  JobParameters param =    new JobParametersBuilder().addString("date", dateParam).toJobParameters();  
                  System.out.println(dateParam);  
                  JobExecution execution = jobLauncher.run(job, param);             //执行job      
                  System.out.println("Exit Status : " + execution.getStatus());    
    
              } catch (Exception e) {   
                      e.printStackTrace();   
              } 
         }
    }
    

    增加一个运行的主方法

    App.java

    package com.sushou.demo;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    /** * Created by maple on 16/5/14. */
    public class App {   
        public static void main(String[] args) {  
              ApplicationContext context = new ClassPathXmlApplicationContext("job-context.xml"); 
       }
    }
    

    运行app.java 就可以看到运行结果

    定时任务运行结果 2016-05-14 下午2.03.14.png

    相关文章

      网友评论

        本文标题:Spring Batch 中 Scheduler 定时任务

        本文链接:https://www.haomeiwen.com/subject/cwwmrttx.html