spring batch学习笔记之元数据表
来源:互联网 发布:逆战数据异常规范游戏 编辑:程序博客网 时间:2024/06/05 11:18
作用
spring batch框架通过元数据表(meta data tables)来保存每个job的执行情况。包括记录每个job的名称和参数,每个job execution的状态和执行结果,每个tasklet的状态和执行结果等。
配置
为了能让JAVA代码访问元数据表,需要做如下配置:
(1)库表准备
假设通过MySQL来存储元数据,需要确保已经安装MySQL,然后创建数据库和初始化元数据表。初始化元数据表的schema可以在spring-batch中找到:
..\spring-batch\spring-batch-core\src\main\resources\org\springframework\batch\core\schema-mysql.sql你可以手动执行这个schema中的sql,也可以通过jdbc:initialize-database进行指定:
<jdbc:initialize-database data-source="dataSource"><jdbc:script location="clssspath:schema-drop-mysql.sql" /><jdbc:script location="clssspath:schema-mysql.sql" /></jdbc:initialize-database>(2)引入MySQL驱动
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>...</version></dependency>(3)配置JobRepository
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost/spring_batch_test"/><property name="username" value="root"/><property name="password" value="1"/></bean><bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" /><bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"><property name="dataSource" ref="dataSource" /><property name="transactionManager" ref="transactionManager"/><property name="databaseType" value="mysql" /></bean>
通过以上配置后,你的spring batch元数据表就配置好了,当你在运行job时,这些表会得到更新。
表描述
spring batch元数据一共有9张表,如下所示:
batch_job_executionbatch_job_execution_contextbatch_job_execution_paramsbatch_job_execution_seqbatch_job_instancebatch_job_seqbatch_step_executionbatch_step_execution_contextbatch_step_execution_seq其中以_seq结尾的三张表,顾名思义维护batch_job_instance、batch_job_execution、batch_step_execution的sequence id。
batch_job_instance表
JOB_INSTANCE_ID:JOB ID由batch_job_seq分配
VERSION:job版本号,同一个job执行多次时使用
JOB_NAME:job名称,与spring配置一致
JOB_KEY:对job参数的MD5编码,正因为有这个字段的存在,同一个job如果第一次运行成功,第二次再运行会抛出JobInstanceAlreadyCompleteException异常。
batch_job_execution_params表:记录每个job的参数
对于如下Parameter:
Map<String, JobParameter> parameterMap = new LinkedHashMap<String, JobParameter>();parameterMap.put("userId", new JobParameter(8110332L, true));parameterMap.put("nick", new JobParameter("zhangsan", true));parameterMap.put("birthday", new JobParameter(new Date(), true));对应的表数据如下:
只有identifying=true的字段才会参与JOB_KEY的MD5编码
batch_job_execution与batch_step_execution表
JOB_EXECUTION_ID:sequence id
VERSION:版本
JOB_INSTANCE_ID:参照batch_job_instance中的JOB_INSTANCE_ID字段
CREATE_TIME
START_TIME
END_TIME
STATUS:job运行的状态
EXIT_CODE:退出码
EXIT_MESSAGE
LAST_UPDATED:最后一次更新时间
JOB_CONFIGURATION_LOCATION
batch_step_execution表除了以上字段外,还有与tasklet相关的一些字段:
COMMIT_COUNT:提交次数
READ_COUNT:读取item数
FILTER_COUNT:被过滤的item数
WRITE_COUNT:写入itemWriter的次数
READ_SKIP_COUNT
WRITE_SKIP_COUNT
PROCESS_SKIP_COUNT
batch_job_execution_context与batch_step_execution_context表
这两张表主要是保存job和step运行中的中间数据, 以便下次运行时可以恢复
STEP_EXECUTION_ID:step id
SHORT_CONTEXT:json化的ExecutionContext,如
{ "map": { "entry": { "string": "FlatFileItemReader.read.count", "int": 10 } }}
SERIALIZED_CONTEXT:被序列化之后的ExecutionContext
表操作
- spring batch学习笔记之元数据表
- spring batch学习笔记之领域模型
- Spring Batch学习笔记
- spring batch 学习笔记
- Spring Batch之Sample(游标方式读写DB数据表)
- Spring Batch 之 Sample(游标方式读写DB数据表)
- Spring Batch学习笔记(1)
- Spring Batch学习笔记(1)
- Spring Batch学习笔记(1)
- Spring batch笔记
- Spring Batch 之 Sample(游标方式读写DB数据表)(八)
- Spring Batch 之 Sample(游标方式读写DB数据表)(八)
- Spring Batch之Sample(游标方式读写DB数据表)(二)
- Spring Batch 之 Sample(游标方式读写DB数据表)(八)
- Spring Batch 之 Spring Batch 简介(一)
- Spring Batch 之 Spring Batch 简介(一)
- Spring Batch之Spring Batch简介
- Spring Batch 之 Spring Batch 简介(一)
- 按位与、或、异或等运算方法
- 全球市场回顾:美国手游营收居首 中日韩有望赶超
- java 管道流之PipedOutputStream和PipedInputStream
- CMD 模块定义规范
- 使用MockEJB简化EJB测试
- spring batch学习笔记之元数据表
- c++学习 定位new表达式
- 14个最受欢迎的Python开源框架
- wifi direct (wifi peer to peer)
- SQL Server 触发器的管理与查看
- Android学习(15)-摄像头和相册
- oracle编程入门笔记2015-01-18--常用oracle查询语句
- 苹果开发者账号申请与iTunesconnect中心问题联系电话
- 学习Python编程的11个资源