spring batch 总结

作为springcloud组成当中提供批处理能力的模块。相关概念如下:

Spring Batch的结构:

                     

             

 

       从上到下以三层架构理解:应用层、核心层、基础架构层。应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。核心层包含了Batch启动和控制所需要的核心类,如:JobLauncherJobstep等。应用层和核心层建立在基础构架层之上,基础构架层提供共通的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用)。而实际实现的业务逻辑则有基础架构层构建。

Spring Batch流程介绍:

上图描绘了Spring Batch的执行过程。说明如下:

    每个Batch都会包含一个Job。Job就像一个容器,这个容器里装了若干Step,Batch中实际干活的也就是这些Step,至于Step干什么活,无外乎读取数据,处理数据,然后将这些数据存储起来(ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据) 。JobLauncher用来启动Job,JobRepository是上述处理提供的一种持久化机制,它为JobLauncher,Job,和Step实例提供CRUD操作。

    外部控制器调用JobLauncher启动一个Job,Job调用自己的Step去实现对数据的操作,Step处理完成后,再将处理结果一步步返回给上一层,这就是Batch处理实现的一个简单流程。

 

Step执行过程:

      从DB或是文件中取出数据的时候,read()操作每次只读取一条记录,之后将读取的这条数据传递给processor(item)处理,框架将重复做这两步操作,直到读取记录的件数达到batch配置信息中”commin-interval”设定值的时候,就会调用一次write操作。然后再重复上图的处理,直到处理完所有的数据。当这个Step的工作完成以后,或是跳到其他Step,或是结束处理。

      这就是一个SpringBatch的基本工作流程。

public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext(

"batch.xml");

JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher");

Job job = (Job) context.getBean("helloWorldJob");

try {

/* 运行Job */

JobExecution result = launcher.run(job, new JobParameters());

/* 处理结束,控制台打印处理结果 */

System.out.println(result.toString());

} catch (Exception e) {

e.printStackTrace();

}

}

说明:

1、读取xml的上下文ClassPathXmlApplicationContext

2、JobLauncher启动Job返回执行结果JobExecution

来自 <Spring Batch 之 Sample(Hello World)(三) - 孤旅者 - 博客园>

自己的理解

定时。批处理可能遇到在指定时间处理的业务,所以可以使用@schedule注解添加定时启动

流程。springbatch中作业、作业里面的步骤。可以实现流水线模式来处理一系列串行的业务。但是否能够支持分支流程需要研究下。

配置:为了侧重于灵活化的话,job需要配置在xml里面一边支持模块组装。

已支持的功能。springbatch里面已支持文件读取处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值