1 Star 0 Fork 0

菌子 / learning

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Without author's permission, this code is only for learning and cannot be used for other purposes.
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

实验室

1. spring batch

重要说明

  • 依赖包中 batch 与 task 组件的关系

    • 如果只是编写 batch ,依赖包只需要 springbatch 即可。

      但是在部署到 dataflow 环境下,由于 dataflow 是基于 task ,所以需要引入 task 组件,

      否则 batch 任务虽然仍可正常执行,但是 dataflow 界面无法显示执行日志。

    • 如果没有 task 组件,该模块做为应用程序,瞬间结束退出了,无法执行 batch 任务

  • batch 任务不能依赖 web,否则就是一个服务,无法结束。

所有示例参考 "【千锋】Java Spring Batch实战教程"

  • readStr

    • 一个入门程序,该示例比较完整的 demo

    • 基于 mybatis-plus 双数据源配置。

    • Processor2 中有获取 JobParameters 写法, 需要加上 @StepScope 注解。

    • retry 和 skip 机制:

    • 异常处理 |-|使用范围|read 异常|process 异常|write 异常|-| |:---|:---|:---|:---|:---|:---| |skip|Read, Processor 和 Writer 中使用|skip 异常数据,重复执行 read ,
      直到返回数据达到 chuck size |skip 异常数据, 然后重新 scan 这批 chuck 数据,
      就是说,会重复执行这批数据,除异常数据外 |回到 process 处理器,重新 scan 这批 chuck 数据,逐条执行结果传给 write ,即 write 单条处理,
      如果单条处理发生异常,直接 skip 数据, 不影响后续数据处理 |-| |retry|Processor 和 Writer 中使用|-|重新 scan 这批 chuck 数据,
      当执行到异常数据时,会重试
      如果再发生异常,不断重复上述过程,直到 retryLimit 而中断 job |回到 process 处理器,重新 scan 这批 chuck 数据,并将这批 chuck 数据一次性传给 write , 即 write 仍是处理一批数据,
      如果发生异常,不断重复上述过程,直到 retryLimit 而中断 job |-|

    • 如果同时设置,retry 设置失效

  • usejob

    • 如何构建 job 时指定 steps
  • useFlow

    • flow 是一组 step

    • flow 可以被多个 job 复用

  • useSplit

    • 并发执行
  • useDecider

    • 决策器
  • useJobNested

    • job 嵌套。

    教程提示需要配置 spring.batch.job.names = nestedJobDemoJob , 但是我没有配置也可以成功

  • useListen

    • 示例见 readStr. 错误重试 retry 不知道什么原因,以前测试没有问题的,现在 retry 不起作用

    • 创建监听可以通过实现接口或注解

    • JobExecutionListener(before, after) 监听job的执行开始和结束;

      • 两种实现方式 : 1. 使用注解@BeforeJob、@AfterJob 2. 实现接口 JobExecutionListener
    • StepExecutionListener(before, after) 监听step的执行开始和结束;

      • 两种实现方式 : 1. 使用注解@BeforeStep、@AfterStep 2. 实现接口 StepExecutionListener
    • ChunkListener(before, after, error) 监听的chunk的执行开始和结束,或者监听chunk出错

    • ItemReadListener 监听 读之前、读之后、读的时候发生错误

    • ItemProcessListener 监听 处理之前、处理之后、处理的时候发生错误

    • ItemWriteListener(before, after, error) 监听 写之前、写之后、写的时候发生错误

    • SkipListener 在读、处理、写的过程中,监听跳过的异常;

  • useParameter

    • 使用参数, step 之间传参通过单独定义一个类 (spring 默认单例)

2. 规则框架 drools

示例 1

  • 把 excel 规则通过 freemarker 生成 drools 文件,然后将规则文件写入内存

* 缺点:不能动态修改 excel 实时生成 drools 文件

示例 2

  • 直接导入整个 excel 文件到内存,可以动态修改 excel 规则。

  • 缺点:还未解决对多个 excel 文件导入的问题,目前一次只能导入一个 excel 文件


3. if-else

  • 通过 “ 工厂模型 + 注解 " 实现多个 if

4. jvm

  • 用于学习 jvm 的测试程序

5. redis

示例1

  • 通过 jedis 实现分布式锁

  • 通过 redisson 实现分布式锁 (推荐)


6. stream

  • jdk8 开发中遇到的业务场景

    • 两个 List 运算:根据 A list 中的对象属性,在 B list 查找符合要求的集合

Comments ( 0 )

Sign in for post a comment

About

学习demo spread retract
Java
Cancel

Releases

No release

Contributors

All

Activities

load more
can not load any more
Java
1
https://gitee.com/minimoto/learning.git
git@gitee.com:minimoto/learning.git
minimoto
learning
learning
master

Search