- 数据处理的引擎
简单描述一下,比如说发动机4个冲程能完成一次做功输出,那整体看发动机完成一次任务(Job)分为4个步骤(step)。
1个Job,4个步骤(step1,step2,step3,step4),做完之后就无限次循环这个Job就行了。 - 应用范围
比方说你要开发一个爬虫去读网页的数据,那可能分为n多个步骤处理下来才能得到想要的数据,中途还会对各个步骤有所增减,包括读取数据后要存储数据库,对数据库的操作要具有原子性等等。
又比方说你的程序处于后台的数据流当中,要不断的读取数据,处理数据,最后输出数据,就有点像spring的batch工程。当然我这个没那么强大,但是短小精干,通俗易懂。对于后期二次开发非常给力,话说spring最开始不也只是一个控制反转么,哈哈,王侯将相,怎么来着?
话不多说开整,github的地址
项目源码
https://github.com/heliangb46/simpleTask.git
我愿称之为“数据处理引擎”。
怎么能让你快速理解我的代码都干了什么,怎么干,然后能变成你自己的代码呢?
我是这样做的,利用git分支的优点。
你看到的main分支是最开始的源码,然后根据分支的名称(版本号),然后每个分支对应的readme.md文件都会说明这个分支做了什么。你一点一点仔细对比git的版本间的不同就明白我的程序要做什么了。每个分支的代码都是与其readme文件对应的。
这里如果涉及到处理事务的原子性问题时,相当于要将step中的execute方法加事务。即step要么成功,要么失败,不会执行一半。step是整个job的不可再分子程序。
以下下是版本的迭代说明
simpleTask
核心代码是(This code core):com.managefuture.task.scheduled.job.firstjob.FirstJobTask.java
序号,分支 | 中文 | English |
---|---|---|
1 | 这是一个非常简单的任务处理工程 | this is a very simple project to deal with task |
2 | 这个版本并不包含我自己的代码,基本都是springBoot的初始化内容 | this version has no code of written by myself, most of it is came from spring boot |
3 | 接下来请留意pom.xml中的版本号和git的分支名称 | next, please watch version in the pom.xml and the branch name of git |
4,1.0.1 | 这个版本增加了一个简单的定时任务执行器,每间隔2秒执行一次日志的输出:I am runnning | this version append a simple task executer, it can say “I am running” with every two second |
5,1.0.2 | 添加了一个任务,但是这两个任务是串行的 | add the second task,but those two task can run in only on process |
6,1.0.3 | 向SimpleTaskApplication中添加了多线程配置的代码,从而使两个task运行在不同的线程中,互不干扰 | add some code in “SimpleTaskApplication”, so those two task run in defferent process |
7,1.0.4 | 这里建议不要使用@Scheduled注解来控制周期,这里把@Scheduled注解中的周期配置成1,相当于一个cpu的时钟振子,然后通过这里的睡眠来控制任务的周期,达到一个后期可以动态更改程序运行周期的目的 | suggest do not us “@Scheduled” annotation to setting the period,this setting like a cpu frequency,then use sleep method to control the period, after all you can control the period in running time. |
8,1.1.0 | 我会做一个程序,用多个步骤来完成一个工作任务的程序,并且增加修改删除步骤的时候,也很容易。第一步,先做一个只需要一步就能够完成的任务 | I will make a program that can deal one job in few step, and it`s easily to modify the steps. first, make a job with one step |
9,1.1.1 | 加一个步骤 | append one more step |
10,1.1.2 | 加一个Job | append one more Job |
11,1.1.3 | 让整个项目简单一些,只留下一个任务 | delete other code, but leave FirstJobTask |
12,1.1.4 | 让控制台输出更好看一些 | make the console formatted |
13,1.2.0 | 加入数据库功能 | add mysql db |
14,1.3.0 | 加入web的访问控制层 | add controller |
15,1.3.1 | 加入spring 官网的样例 restful 的web的访问控制层 | add spring demo restful web controller |
16,1.3.2 | 写了一个工具类MyFileUtils.java 用来读取文本文件,当然读取其他类型的文件也是可以的 | add MyFileUtils.java to read a txt file,or even other type file |
17,1.3.3 | 写了一个切面注解,用于显示调用方法入参和返回值的日志 | write a aop annotation to view method in/out parameter`s log |
更新日志 2022年05月01日
合并代码到main分支
序号,分支 | 中文 | English |
---|---|---|
16,1.3.2 | 写了一个工具类MyFileUtils.java 用来读取文本文件,当然读取其他类型的文件也是可以的 | add MyFileUtils.java to read a txt file,or even other type file |
17,1.3.3 | 写了一个切面注解,用于显示调用方法入参和返回值的日志 | write a aop annotation to view method in/out parameter`s log |