PowerJob介绍
PowerJob 是全新一代分布式任务调度和计算框架,提供了可视化界面,可通过单机、远程等形式调用任务并提供了运行监控和日志查看的功能模块,是当前比较流行的分布式定时任务框架之一;
PowerJob 官网文档地址
环境搭建
本文介绍的是通过远程调用的形式实现定时任务的综合治理,可直接通过官网提供的初始化项目直接进行搭建基础框架
git 下载命令
git clone https://github.com/PowerJob/PowerJob.git
下载完成之后目录结构如下
其中我们只需要关注powerjob-worker-samples模块和powerjob-server下的powerjob-server-starter模块,这两个模块主要是调度服务器和使用案例,如果我们需要将起整合到项目中,这两个模块是必须的,其它的项目可生成JAR文件导入到项目中即可。
powerjob-server是我们的调度服务模块,类似于注册中心,我们需要对其进行一些简单的改善,成为我们的“利刃”。
powerjob-server-starter项目下的properties文件修改(application-daily.properties)
oms.env=DAILY
logging.config=classpath:logback-dev.xml
####### Database properties(Configure according to the the environment) #######
spring.datasource.core.driver-class-name=org.postgresql.Driver
spring.datasource.core.jdbc-url=jdbc:postgresql://pg10:5432/powerjob_mange
spring.datasource.core.username=job_manager
spring.datasource.core.password=job_manager_123
spring.datasource.core.maximum-pool-size=20
spring.datasource.core.minimum-idle=5
####### Resource cleaning properties #######
oms.instanceinfo.retention=1
oms.container.retention.local=1
oms.container.retention.remote=-1
####### Cache properties #######
oms.instance.metadata.cache.size=1024
####### Threshold in precise fetching server(0~100). 100 means full detection of server, in which #######
####### split-brain could be avoided while performance overhead would increase. #######
oms.accurate.select.server.percentage = 50
这里我们主要是更改我们的数据地址,基础项目中还存在这样一段代码
####### Storage properties(Delete if not needed) #######
#oms.storage.dfs.mongodb.uri=mongodb+srv://zqq:No1Bug2Please3!@cluster0.wie54.gcp.mongodb.net/powerjob_daily?retryWrites=true&w=majority
oms.storage.dfs.mysql_series.driver=org.postgresql.Driver
oms.storage.dfs.mysql_series.url=jdbc:mysql://powerjob-mysql:3306/powerjob-daily?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
oms.storage.dfs.mysql_series.username=root
oms.storage.dfs.mysql_series.password=No1Bug2Please3!
oms.storage.dfs.mysql_series.auto_create_table=true
###### Email properties(Non-core configuration properties) #######
###### Delete the following code to disable the mail #######
spring.mail.host=smtp.163.com
spring.mail.username=zqq@163.com
spring.mail.password=GOFZPNARMVKCGONV
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
###### DingTalk properties(Non-core configuration properties) #######
###### Delete the following code to disable the DingTalk #######
oms.alarm.ding.app-key=dingauqwkvxxnqskknfv
oms.alarm.ding.app-secret=XWrEPdAZMPgJeFtHuL0LH73LRj-74umF2_0BFcoXMfvnX0pCQvt0rpb1JOJU_HLl
oms.alarm.ding.agent-id=847044348
这些配置是配置一些短信通知,数据存储的,这边就不做多的讲解了,一般没有特殊要求,不需要配置这些数据的。
powerjob-worker-samples是我们的基础框架生成出来的一个实例程序,经过博主的测试,如果不启动修改这个项目的配置文件,那么我们项目是无法正常使用的,虽然可以打开UI界面,但是无法进行其它操作
对powerjob-worker-samples的application.properties进行修改,修改内容如下
server.port=8081
spring.jpa.open-in-view=false
########### powerjob-worker 配置 ###########
# akka 工作端口,可选,默认 27777
powerjob.worker.akka-port=27777
# 接入应用名称,用于分组隔离,推荐填写 本 Java 项目名称
powerjob.worker.app-name=powerjob-worker-samples
# 调度服务器地址,IP:Port 或 域名,多值逗号分隔
powerjob.worker.server-address=127.0.0.1:7700,127.0.0.1:7701
# 持久化方式,可选,默认 disk
powerjob.worker.store-strategy=disk
# 任务返回结果信息的最大长度,超过这个长度的信息会被截断,默认 8192
powerjob.worker.max-result-length=4096
# 单个任务追加的工作流上下文最大长度,超过这个长度的会被直接丢弃,默认 8192
powerjob.worker.max-appended-wf-context-length=4096
其中需要注意一下,name的属性值是我们等下需要进行注册的用户名,需要相对于的,
具体使用在官方文档中有比较详细的介绍,我这边就不过多描述了。
这里要特别提醒一下,项目打包的时候,需要对lombok的版本进行调整
<lombok.version>1.18.24</lombok.version>
将版本调成这个版本就不会打包报错了
项目使用
这里只介绍者一种方式,请求参数中的URL是需要执行定时任务的请求路径,可拼接参数什么的,具体因实际需求更改。
tech.powerjob.official.processors.impl.HttpProcessor
这个是HTTP远程请求的固定写法,不能更改的
其它的执行配置可以参考个官方文档进行使用,如有不对,欢迎指正。
参考文档https://www.yuque.com/powerjob/guidence/quick_start