zoukankan      html  css  js  c++  java
  • Spring Batch学习笔记三:JobRepository

    此系列博客皆为学习Spring Batch时的一些笔记;

    Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用HSQLDB,也就是说在Job的运行过程中,所有的元数据都被储存在内存中,在Job结束后会随着进程的结束自动消失;在这里我们推荐配置JobRepository去使用MySQL。

    在这种情况下,Spring Batch在单次执行或者从一个执行到另外一个执行的时候会使用数据库去维护状态,Job执行的信息包括Job实例、传入的参数、执行的结果、每一个Step执行的结果都会被存储在数据库中;数据库使用了6个表来存储相关信息:

    BATCH_JOB_INSTANCE

    我们都知道,在Job运行时,一个Job实例被创建;Job实例包含了Job实例它本身和Job参数;所有Job实例本身的信息将会被保存在BATCH_JOB_INSTANCE表中:

     字段 描述 
     JOB_INSTANCE_ID  表的主键
     VERSION  记录的版本
     JOB_NAME  被执行JOB名
     JOB_KEY  Job名和Job参数的Hash值,被使用来唯一标示一个Job实例

    BATCH_JOB_PARAMS

    这个表包含了所有被传递到Job的参数,正如上面提到的,参数被Spring Batch使用来作为Job标示的一部分。这个表包含的字段如下:

     字段  描述
     JOB_INSTANCE_ID  表示BATCH_JOB_INSTANCE的外键
     TYPE_CD  表示被存储的值的类型(string, date, long, double)
     KEY_NAME  Job参数的键(Job参数作为键值对被传递)
     STRING_VAL  当这个参数是string类型时的值
     DATE_VAL  日期型参数值
     LONG_VAL  长整型参数值
     DOUBLE_VAL  双精度或者单精度型参数值

    BATCH_JOB_EXECUTION和BATCH_STEP_EXECUTION

    当一个Job被创建并执行时,这个Job的运行状态被保存在BATCH_JOB_EXECUTION表中,其中包括:开始时间、结束时间、最近一次执行的结果;

    BATCH_STEP_EXECUTION表和BATCH_JOB_EXECUTION差不多,它包含了每一个Step在执行过程中的开始时间、结束时间、commit的次数、Step状态相关的参数;

    BATCH_JOB_EXECUTION表的字段信息:

     字段  描述
     JOB_EXECUTION_ID  表的主键
     VERSION  记录的版本
     JOB_INSTANCE_ID  到BATCH_JOB_INSTANCE表的外键
     CREATE_TIME  Job实例被创建的时间
     START_TIME  Job开始执行的时间
     END_TIME  Job执行结束的时间,不管成功与否
     STATUS  Job被执行的状态
     EXIT_CODE  Job返回时的退出码
     EXIT_MESSAGE  Job返回时的推出消息
     LAST_UPDATED  当前记录上一次被更新的时间

     BATCH_STEP_EXECUTION表的字段信息:

     STEP_EXECUTION_ID  表的主键
     VERSION  记录的版本
     STEP_NAME  被配置在Job xml中的Step的名字
     JOB_EXECUTION_ID  连接到BATCH_JOB_EXECUTION表的外键
     START_TIME  Step开始的时间
     END_TIME  Step完成的时间,无论成功与否
     STATUS  Step当前的状态
     COMMIT_COUNT  当前Step被Commit的次数
     READ_COUNT  当前Step读取数据库的次数
     FILTER_COUNT  当前Step读取到的item数量
     WRITE_COUNT  当前Step写的Item数量
     READ_SKIP_COUNT  读取Item时跳过的数量
     WRITE_SKIP_COUNT  写Item时跳过的数量
     PROCESS_SKIP_COUNT  在ItemReader读取后,没有经过ItemProcessor处理的item的数量
     ROLLBACK_COUNT  在Step执行过程中,总的Rollback的数量
     EXIT_CODE  Step完成时返回的退出码
     EXIT_MESSAGE  Step完成时返回的退出消息
     LAST_UPDATED  这条记录上次被更新的时间

    BATCH_JOB_EXECUTION_CONTEXT和BATCH_STEP_EXECUTION_CONTEXT

    这是两个Context相关的表,它们分别用于存储Job或者Step相关的ExecutionContext的持久化版本,Spring Batch中的ExecutionContext类似于WEB应用程序中的Servlet Context或Session,它们都提供了一个存储信息的全局空间,本质上是作用域在Job或者Step中的一个键值对;这个Job或者Step的ExecutionContext被用来在特定的作用域里面传递信息,如果是Job,它就用来在Step与Step之间传递信息,如果是Step,它用来在多个记录的处理过程中传递信息。

    表BATCH_JOB_EXECUTION_CONTEXT和BATCH_STEP_EXECUTION_CONTEXT是这些键值对的序列化版本,它们除了一个外键不同之外,其它几乎都相同; 

     字段  描述
     JOB_EXECUTION_ID/STEP_EXECUTION_ID  引用自表BATCH_JOB_EXECUTION或BATCH_STEP_EXECUTION的外键
     SHORT_CONTEXT  Context的字符串表示
     SERIALIZED_CONTEXT  一个被序列化的ExecutionContext,以便在将来重试的时候使用
  • 相关阅读:
    MT【38】与砝码有关的两个题
    MT【37】二次函数与整系数有关的题
    MT【36】反函数有关的一道题
    MT【35】用复数得到的两组恒等式
    MT【34】正余弦的正整数幂次快速表示成正余弦的线性组合
    MT【33】证明琴生不等式
    MT【32】内外圆(Apollonius Circle)的几何证明
    MT【31】傅里叶级数为背景的三角求和
    MT【30】椭圆的第二定义解题
    MT【29】介绍向量的外积及应用举例
  • 原文地址:https://www.cnblogs.com/cdutedu/p/3793484.html
Copyright © 2011-2022 走看看