SpringBatch 配置Job之二
来源:互联网 发布:java被取代 知乎 编辑:程序博客网 时间:2024/06/08 15:56
Step Scope
Step Scope时SpringBatch框架提供的自定义的Scope,将SpringBean定义为Step Scope,支持SpringBean在Step开始的时候初始化,在Step结束的时候销毁SpringBean,将
SpringBean的生命周期与Step绑定。
在SpringBatch框架中,Step Scope会自动被注册到Spring上下文中,如果没有使用Spring的配置文件,需要显示的声明Step Scope。
<bean:bean id="csvItemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step"> ... ... </bean:bean>
通过属性scope=”step”来定义csvItemReader的生命周期和Step绑定
运行Job
SpringBatch 框架提供了一组执行Job的接口。包括JobLauncher、JobExplorer和JobOperator三个操作Job的接口。
JobLauncher 是最常用的作业调度器,通过给定的Job Name 和Job Parameters 可以执行Job;
JobExplorer 主要负责从JobRepository中获取执行的信息,包括获取作业实例、获取作业执行器、获取作恶步执行器、获取正在运行的作业执行器、获取作业列表等操作;
JobOperator 包含了JobLauncher和JobExplorer中的大部分操作。
调度作业
通过JobLauncher来调度作业
// 调度作业 ApplicationContext context = new ClassPathXmlApplicationContext("job.xml"); JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher"); Job job = (Job) context.getBean("billJob"); try { JobExecution result = launcher.run(job, new JobParameters()); System.out.println(result.toString()); } catch (Exception e) { e.printStackTrace(); }
JobLauncher支持对作业的同步、异步两种调用模式。
同步异步
配置异步调用的JobLauncher只需要增加属性taskExecutor,该属性表示当前执行的线程池。
<!-- 配置异步JobLauncher --> <!-- 配置大小为5的线程池 --> <task:executor id = "executor" pool-size="5" /> <bean:bean id = "jobLauncherAsyn" class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> <bean:property name = "jobRepository" ref ="jobRepository" /> <!-- 为作业调度器配置执行的线程池, 作业执行期间会从线程池中选择一个线程执行Job --> <bean:property name = "taskExecutor" red="executor" /> </bean:bean>
Job与外界系统
在实际的Job使用场景中,标准Web应用、定时任务调度器、命令行等都可能触发不同的Job操作。
与定时任务集成
SpringBatch提供了Job的执行能力,其本身不是一个定时调度框架,因此可以将定时调度框架和SpringBatch结合起来完成定时作业。Spring本身提供了一个轻量级的调度框架Spring scheduler。
<!-- 执行定时任务的线程池大小 --> <task:scheduler id="scheduler" pool-size="100" /> <!-- 每一分钟,执行对象schedulerLauncher的launch方法一次 --> <task:scheduled-tasks scheduler="scheduler"> <task:scheduled ref="schedulerLauncher" method="launch" fixed-rate="1000"/> </task:scheduled-tasks> <bean:bean id = "schedulerLauncher" class = ""> <bean:property name = "job" ref = "hellowordJob" /> <bean:property name="jobLauncher" ref="jobLauncher" /> </bean:bean> <!-- HellowordJob --> <job id = "hellowordJob"> <step> ... ... </step> </job>
public class SchedulerLauncher { private Job job; private JobLauncher jobLauncher; public void launch() throws Exception{ JobParameters jobParams = this.createJobParameters(); jobLauncher.run(job, jobParams); } private JobParameters createJobParameters(){ JobParameters jobParams = new JobParametersBuilder() .addDate("executeDate", new Date()).toJobParameters(); return jobParams; }}
与Web应用集成
SpringBatch框架基于Spring开发,可以方便的内嵌在web应用中使用,这样批处理作业可以通过HTTP协议进行远程的访问。同样可以在web应用中内嵌定时任务处理框架,方便在web应用内部通过定时框架调用SpringBatch中定义的Job。
- SpringBatch 配置Job之二
- SpringBatch 配置Job之一
- SpringBatch配置数据库
- springbatch常规配置
- SpringBoot+SpringBatch+Oracle配置
- SpringBatch配置多线程step
- SpringBatch的基本工作流程(二)
- SpringBatch之固定长格式文件读写
- 关于大数据之批处理SpringBatch
- Flink之修改StreamExecutionEnvironment配置Job
- 跑批利器--往数据库里配置SpringBatch
- [Oracle Job]Oracle Job配置
- MapReduce剖析笔记之二:Job提交的过程
- Elastic-Job之简单Job
- spring batch之三 配置和运行Job
- oracle Job 二
- Quartz (二) Job任务
- wonderful job(二)
- CSS3动画的属性主要分为三类:transform、transition以及animation。
- DayDream VR应用开发实践 (第一个android DayDream应用)
- 设计模式2(工厂模式)
- Hadoop平台安全机制Kerberos认证
- 关于升级miui到miui8.1之后,发现Android Studio 安装app时出现application installation failed INSTALL_SANCELED_BY_USER
- SpringBatch 配置Job之二
- hdu-2276(Kiki & Little Kiki 2)
- acooly-guide
- 一台虚拟机上搭建伪zookeeper集群遇到的问题--connect refused
- redis中密码设置
- 安装pg_rman是出现libpq.so.5()(64bit) is needed by ...
- 目标、想法、行动
- HTTP POST GET 本质区别详解
- poj 1797 Heavy Transportation