Spring Batch的配置文件解读
2015-02-11 15:15
309 查看
Batch configuration
<?xml version="1.0" encoding="UTF-8"?> <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" 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"> <batch:job id="importProductsJob"> (...) </batch:job> </beans>
配置验证器:
<batch:validator ref="parameterValidator" />,用来校验工作参数(job parameters),可以实现JobParametersValidator接口。如果无法通过验证,会抛出JobParametersInvalidException异常。spring batch提供了一个默认的实现类DefaultJobParametersValidator,完成绝大部分的工作。如果还是无法满足需求,可以自己编码实现接口。
实例:
<batch:job id="importProductsJob"> (...) <batch:validator ref="validator"/> </batch:job> <bean id="validator" class="org.springframework.batch.core.job.DefaultJobParametersValidator"> <property name="requiredKeys"> <set> <value>date</value> </set> </property> <property name="optionalKeys"> <set> <value>productId</value> </set> </property> </bean>
Step listener:
Step listener 作为tasklet标签的一个子标签进行配置。用来跟踪step的处理过程。<span style="font-size:14px;"> <batch:step id="step1" parent="parent" next="step2"> <batch:tasklet> <batch:chunk reader="reader" processor="processer" chunk-completion-policy="completionPolicy" /> <batch:listeners merge="true"> <batch:listener ref="stepLogListener" /> </batch:listeners> </batch:tasklet> </batch:step></span>
<span style="font-size:14px;"> <bean id="<span style="font-size:14px;">stepLogListener</span>" class="test.S<span style="font-size:14px;">tepLogListener</span>" scope="step"> <property name="item" value="A" /> <property name="Msg" value="zzzz" /> </bean> </span>
利用监听来出力step执行前后的Log
注意:listeners标签,提供merge属性,可以用来合并parent和自身的listener
并行的Step:
多个step之间的并行化,可以提高批处理的效率。什么情况下可以应用step之间的并行化,那就要根据具体的业务需求来定。那我们假设有这样一种场景:有一类数据,分别存在于文件和数据库,数据的内容一样,只是形式不一样,那么我们可以定义并行的step来分别处理来自文件的数据和来自数据库的数据,然后,分别进行同样的processor,然后写入数据库。<span style="font-size:12px;"> <bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor" /> <!-- 并行的step --> <batch:job id="addPeopleDescJob"> <batch:split id="split1" task-executor="taskExecutor"> <batch:flow> <batch:step id="parallel_step_1"> <batch:tasklet> <batch:chunk reader="peopleAddDescReader_db" processor="addDescProcessor" writer="addDescPeopleWriter" commit-interval="10" /> </batch:tasklet> </batch:step> </batch:flow> <batch:flow> <batch:step id="parallel_step_2"> <batch:tasklet> <batch:chunk reader="peopleAddDescReader_file" processor="addDescProcessor" writer="addDescPeopleWriter" commit-interval="10" /> </batch:tasklet> </batch:step> </batch:flow> </batch:split> </batch:job> </span>
task-executor指定了一个异步任务执行器 SimpleAsyncTaskExecutor,该执行器将会按照配置创建指定数目的线程来进行数据处理。通过这种方式,避免了我们手动创建并管理线程的工作,使我们只需要关注业务处理本身。
表 1. 任务执行器列表
类名 | 描述 | 是否异步 |
---|---|---|
SyncTaskExecutor | 简单同步执行器 | 否 |
ThrottledTaskExecutor | 该执行器为其他任意执行器的装饰类,并完成提供执行次数限制的功能 | 视被装饰的执行器而定 |
SimpleAsyncTaskExecutor | 简单异步执行器,提供了一种最基本的异步执行实现 | 是 |
WorkManagerTaskExecutor | 该类作为通过 JCA 规范进行任务执行的实现,其包含 JBossWorkManagerTaskExecutor 和 GlassFishWorkManagerTaskExecutor 两个子类 | 是 |
ThreadPoolTaskExecutor | 线程池任务执行器 | 是 |
参考资料:
http://kanpiaoxue.iteye.com/blog/1770683http://my.oschina.net/xinxingegeya/blog/344720
http://www.ibm.com/developerworks/cn/java/j-lo-springbatch2/
相关文章推荐
- 配置Struts应用--解读Struts应用的两大配置文件
- Linux内核配置文件之解读Makefile
- etc配置文件解读——fstab
- 转载:FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- Maven:Hello World 配置文件解读(读书笔记)
- 网络配置文件快速解读
- Eclipse 配置文件eclipse.ini 参数解读
- log4j 配置文件解读
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- 解读acegi的配置文件
- Redis配置文件redis.conf参数解读
- 配置Struts应用--解读Struts应用的两大配置文件
- Redis配置文件解读
- FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解
- 动易SiteFactory配置文件(web.config)解读
- 实例解读PLSM2的运行配置文件及地图分割配置文件
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- ubuntu 启动配置文件grub.cfg解读及设置
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码