springbatch+schedule

spring-batch批量处理框架

使用场景

典型的批处理程序通常:

  • 从数据库,文件或队列中读取大量记录。

  • 以某种方式处理数据。

  • 以修改后的形式写回数据。

Spring Batch自动执行此基本批处理迭代,提供了将一组类似的交易作为一组处理的功能,通常在脱机环境中无需任何用户交互。批处理作业是大多数IT项目的一部分,Spring Batch是唯一提供可靠的企业级解决方案的开源框架。

业务场景

  • 定期提交批处理

  • 并行批处理:作业的并行处理

  • 分阶段的企业消息驱动的处理

  • 大规模并行批处理

  • 失败后手动或计划重启

  • 顺序处理相关步骤(扩展了工作流程驱动的批次)

  • 部分处理:跳过记录(例如,回滚时)

  • 整批交易,适用于小批量或现有存储过程/脚本的情况

技术目标

  • 批处理开发人员使用Spring编程模型:专注于业务逻辑,并让框架处理基础结构。

  • 在基础结构,批处理执行环境和批处理应用程序之间明确分离关注点。

  • 提供通用的核心执行服务作为所有项目都可以实现的接口。

  • 提供可以直接使用的核心执行接口的简单和默认实现。

  • 通过在所有层中利用spring框架,轻松配置,定制和扩展服务。

  • 所有现有的核心服务应易于替换或扩展,而不会影响基础架构层。

  • 提供一个简单的部署模型,其架构JAR与使用Maven构建的应用程序完全分开。

 

说明: 熟悉spring的Quartz的同学应该知道,通过定时任务去调度对应的job去执行具体的任务,这里的批处理可以简单理解成这里的job;

 

 看上面这张图来理解:   

  jobRepository: 定义 Job 时,需要指定一个 JobRepository,用来存储 Job 在运行过程中的状态信息,处理失败重试等功能;

  JobLauncher: job的执行者

  job: 具体任务,由一个或者多个Step组成

  Step:Step中涉及到ItemReader、ItemProcessor、ItemWriter,这三个接口顾名思义就是数据读取,处理以及存储

具体demo代码见GitHub: https://github.com/zlAdmin/springboot-batch

代码启动步骤: 1.在application.yml文件中配置数据库连接

        2. 初始化sql,在resource/metadata目录下 

posted @ 2019-11-19 17:22  zlAdmin  阅读(640)  评论(0)    收藏  举报