Job Repository 数据库方式的配置

写在最前

1、为方便开发,本程序所用框架为springboot+mybatis,同时mybatis还集成了 generator 插件;如果对这些开发环境不熟悉,建议先查询相关资料,搭建springboot+mybatis环境,再集成spring batch。

2、在配置job、step等spring batch 的bean时,用的是java config方式,如想用xml方式配置,可参考 之前的博客:https://blog.csdn.net/Chris___/article/details/103166094

3、源代码github: https://github.com/Horven-Jane/springBatchDemo1,可用于快速验证。

 

 ------------------------------------------------------------------------------------------------------------------------------------------------

 

Job Repository 用来存储Job执行期的元数据,这里的元数据是指Job Instance、Job Execution、Job Parameters、StepExecution、Execution Context等数据。

有关元数据的介绍,这里暂不做详细介绍,读者暂时可以将它们理解为spring batch运行时产生的一些中间数据。

有两种Job Repository 的实现方式,一种是存放在内存中,这在之前的博客中介绍了(https://blog.csdn.net/Chris___/article/details/103166094);另一种则是将元数据存放在数据库中。

 

本篇文章介绍第二种方式——DB Job Repository。

将元数据存放在数据库的好处:可以随时监控批处理Job的执行状态,查看Job执行结果是成功还是失败,并且使得在job失败的情况下重启Job成为可能。

 

以下是详细步骤。

 

一、初始化数据库

初始化数据库,是指要建立相应的数据库表,以便存放元数据。spring batch已经提供了相应的建表、销表语句。

在包spring-batch-core jar包下的 org.springframework.batch.core 目录中,可以找到相应的sql文件,如下:

 

本示例所用的数据库是Mysql,因此执行 schema-mysql.sql 中的语句,即可完成初始化。

如果想销表,则执行 schema-drop-mysql.sql

 

初始化数据库后,可以看到有9张元数据表:

 

 

表对应的描述如下:

二、搭建springboot+mybatis 环境

 

本项目采用springboot+mybatsi作为框架,并用了mybatis的generator功能。

项目的业务场景是:从文件中读取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于Spring Batch,使用H2数据库存储元数据,DB2存储user数据的完整yml配置job代码示例: ```yaml spring: datasource: url: jdbc:h2:file:~/batch_metadata;DB_CLOSE_ON_EXIT=FALSE username: sa password: password driver-class-name: org.h2.Driver batch: initialize-schema: always job: names: userImportJob datasource: url: jdbc:db2://localhost:50000/sample username: db2admin password: password driver-class-name: com.ibm.db2.jcc.DB2Driver job-repository: type: jdbc table-prefix: BATCH_ h2: console: enabled: true ``` 以下是使用上述配置Job代码: ```java @Configuration @EnableBatchProcessing public class UserImportJobConfig { @Autowired private JobBuilderFactory jobBuilderFactory; @Autowired private StepBuilderFactory stepBuilderFactory; @Autowired private DataSource dataSource; @Bean public JdbcCursorItemReader<User> userReader() { JdbcCursorItemReader<User> reader = new JdbcCursorItemReader<>(); reader.setDataSource(dataSource); reader.setSql("SELECT * FROM USER"); reader.setRowMapper(new UserRowMapper()); return reader; } @Bean public ItemWriter<User> userWriter() { return items -> { for (User user : items) { // 执行具体的写入逻辑 } }; } @Bean public Step userImportStep() { return stepBuilderFactory.get("userImportStep") .<User, User>chunk(10) .reader(userReader()) .writer(userWriter()) .build(); } @Bean public Job userImportJob() { return jobBuilderFactory.get("userImportJob") .incrementer(new RunIdIncrementer()) .start(userImportStep()) .build(); } } ``` 在这个示例中,我们定义了一个读取DB2中用户数据的`JdbcCursorItemReader`和一个将用户数据写入到其他系统的`ItemWriter`。我们将这两个组件组合在一个步骤中,并将步骤添加到一个`Job`中。我们使用H2数据库来存储Spring Batch的元数据,以跟踪Job的执行状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值