SpringBoot整合PowerJob 实现远程任务

avatar
作者
猴君
阅读量:0

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!