首页 > 其他分享 >powerjob 任务与工作流配置示例

powerjob 任务与工作流配置示例

时间:2023-10-12 17:26:19浏览次数:43  
标签:official processors 示例 配置 tech 处理器 powerjob impl

powerjob 任务与工作流配置示例

官方文档:https://www.yuque.com/powerjob/guidence/ysug77

参数描述

该截图来自项目官方文档:

image

官方处理器(内置的任务处理器)

官方文档:https://www.yuque.com/powerjob/guidence/official_processor
官方源码:https://github.com/PowerJob/PowerJob/tree/v4.3.6/powerjob-official-processors/src/main/java/tech/powerjob/official/processors/impl

功能验证处理器

  • 类名:tech.powerjob.official.processors.impl.VerificationProcessor
  • 参数:json 或 空.

配置处理器

超简易的配置中心,用于配置的下发,需要配合秒级 + 广播任务使用!
超低成本下的解决方案,强配置 or 高SLA 场景,请使用标准的配置管理中间件。

  • 类名:tech.powerjob.official.processors.impl.ConfigProcessor
  • 参数:json

Shell 处理器

  • 类名:tech.powerjob.official.processors.impl.script.ShellProcessor
  • 参数:填写需要处理的 Shell 脚本(直接复制文件内容)或脚本下载链接(http://xxx.sh

PowerShell 处理器

  • 类名:tech.powerjob.official.processors.impl.script.PowerShellProcessor
  • 参数:填写需要处理的 PowerShell 脚本(直接复制文件内容)或脚本下载链接(http://xxx.ps1

CMDProcessor 处理器

  • 类名:tech.powerjob.official.processors.impl.script.CMDProcessor
  • 参数:填写需要处理的 BAT 脚本(直接复制文件内容)或脚本下载链接(http://xxx.bat

Python 处理器

注意:Python 处理器会使用运行worker机器的 python 命令执行,因此 python 版本需要与本机 python 环境保持一致!

  • 类名: tech.powerjob.official.processors.impl.script.PythonProcessor
  • 参数: 填写需要处理的 Python 脚本(直接复制文件内容)或脚本下载链接(http://xxx.py

HTTP 处理器

  • 类名: tech.powerjob.official.processors.impl.HttpProcessor
  • 参数(JSON): {"method":"GET","url":"http://www.baidu.com"}

文件清理处理器

注意:文件删除是高危操作,请慎用该处理器。默认情况下该处理器不可用,需要传入JVM参数
-Dpowerjob.official-processor.file-cleanup.enable=true 开启

  • 类名: tech.powerjob.official.processors.impl.FileCleanupProcessor
  • 参数(JSONArray): [{"dirPath":"/tmp/test"}, {"dirPath":"/var/log/nginx", "retentionTime":24}]
整体参数为 array,array 中的每个元素为 JSON,描述需要清理的资源,每个节点的参数如下:
● dirPath      :待删除文件的文件夹目录(会递归查找该目录下所有符合要求的文件)
● filePattern  :待删除文件名称的 Java 版正则表达式
● retentionTime:待删除文件的保留时间,单位为小时(当前时间 - 待删除文件上次编辑时间 > retentionTime 的文件才会被删除),用于保留某些滚动日志,0 代表忽略该规则

由于 JSON 内传递正则表达式需要转义,强烈建议先用 Java 代码生成配置(JSONObject#put, JSONArray#add),再调用 toJSONString 方法生成参数。

SQL 处理器

官方文档:https://www.yuque.com/powerjob/guidence/official_processor#9LrIO

目前内置了两款 SQL 处理器,均支持自定义 SQL 的校验、解析逻辑,主要区别在于数据源连接的获取方式不同。

SpringDatasourceSqlProcessor

默认情况下在初始化的时候需要至少注入一个数据源,所以必须提前手动初始化并注册到 Spring IOC 容器中,以 SpringBean 的方式进行加载。

允许使用SpringDatasourceSqlProcessor#registerDataSource方法注册多个数据源

建议:最好将该 SQL Processor 用的数据库连接池和其他业务模块用的数据库连接池隔离开,不要共用一个连接池!

初始化 SpringDatasourceSqlProcessor 示例代码:

@Configuration
public class SqlProcessorConfiguration {
 
 
    @Bean
    @DependsOn({"initPowerJob"})
    public DataSource sqlProcessorDataSource() {
        String path = System.getProperty("user.home") + "/test/h2/" + CommonUtils.genUUID() + "/";
        String jdbcUrl = String.format("jdbc:h2:file:%spowerjob_sql_processor_db;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false", path);
        HikariConfig config = new HikariConfig();
        config.setDriverClassName(Driver.class.getName());
        config.setJdbcUrl(jdbcUrl);
        config.setAutoCommit(true);
        // 池中最小空闲连接数量
        config.setMinimumIdle(1);
        // 池中最大连接数量
        config.setMaximumPoolSize(10);
        return new HikariDataSource(config);
    }
 
 
    @Bean
    public SpringDatasourceSqlProcessor simpleSpringSqlProcessor(@Qualifier("sqlProcessorDataSource") DataSource dataSource) {
        SpringDatasourceSqlProcessor springDatasourceSqlProcessor = new SpringDatasourceSqlProcessor(dataSource);
        // do nothing
        springDatasourceSqlProcessor.registerSqlValidator("fakeSqlValidator", sql -> true);
        // 排除掉包含 drop 的 SQL
        springDatasourceSqlProcessor.registerSqlValidator("interceptDropValidator", sql -> sql.matches("^(?i)((?!drop).)*$"));
        // do nothing
        springDatasourceSqlProcessor.setSqlParser((sql, taskContext) -> sql);
        return springDatasourceSqlProcessor;
    }
 
}
  • 类名:tech.powerjob.official.processors.impl.sql.SpringDatasourceSqlProcessor
  • 参数:{"dataSourceName":"default","sql":"select 'x' from t_example","timeout":10,"showResult":true}

DynamicDatasourceSqlProcessor

支持通过参数动态指定数据源连接,在指定的数据库执行 SQL。
默认情况下该处理器不可用,需要传入JVM参数 -Dpowerjob.official-processor.dynamic-datasource.enable=true 开启。

  • 类名:tech.powerjob.official.processors.impl.sql.DynamicDatasourceSqlProcessor
  • 参数:{"sql":"select 'x' from t_example","timeout":10,"showResult":true,"jdbcUrl":"jdbc:mysql://myhost1:3306/db_name?user=root&password=mypass",}

工作流上下文注入处理器

注意:该 Processor 主要用于一些需要注入固定上下文的工作流场景,作为单个任务执行是没有任何意义的( since v1.2.0 )。

该处理器会从任务参数中加载数据,尝试将其解析成 Map ,如果解析成功,则会将其注入到工作流上下文中。

  • 类名:tech.powerjob.official.processors.impl.context.InjectWorkflowContextProcessor
  • 参数:json

任务类别

crontab

周期性任务:使用cron表达式0 * * * * ? *触发,右侧支持验证表达式语法

HTTP请求:
image

Shell处理:
image

Python脚本:
image

固定频率

根据当前任务的触发时间,间隔30秒,触发下一次任务

image

固定延迟

根据任务当前任务的结束时间,往后延迟10秒触发下次任务

image

每日固定间隔

指定每天(或者周几)的哪个时间段执行,任务间隔(秒为单位)

image

API类型

我理解的是根据API(或者在页面上点击按钮)触发,还没详细测试这个功能.

image

标签:official,processors,示例,配置,tech,处理器,powerjob,impl
From: https://www.cnblogs.com/tomoncle/p/17759989.html

相关文章

  • echarts各类术语和常用配置
    1.术语,按照默认从上到下顺序(即setOption({})里的配置项)官方配置项说明:Documentation-ApacheEChartstitle图表的标题,默认左上角黑色加粗显示legend图例tooltip提示框,就是鼠标移动到某部分图形(例如柱状图的某跟柱或者饼图的某个扇区)在鼠标旁边跟随出现的方框,一般......
  • DR7808 配置笔记
    CSA部分:内部CSA可以配置为单向,或者双向,一共有两个CSA,内部CSA的GAIN可以配置,挡位有10,20,40,80四种增益选项。也可以直接关闭内部CSA,CSA的过流保护值和过流保护滤波时间都可以单独设置。相关寄存器:DR7808_GENCTRL1DR7808_HBIDIAGDR7808_GENCTRL2DR7808_CSA_OC_SH寄存器相关描......
  • selenium系列:三(配置)
    ChromeOptionsChromeOptionsoptions=newChromeOptions();setPageLoadStrategy等待策略options.setPageLoadStrategy(PageLoadStrategy.NORMAL);PageLoadStrategy.NORMAL正常情况下,selenium会等待整个界面加载完成(指对html和子资源的下载与解析,入JS文件,图片等,不包含ajax)PageLo......
  • 自己配置ES
    蛮多年前,我就想自己配置ES,种种原因,就一直没弄,上个月抽空,自己在虚机上配置了一个节点的ES下面只是辅助我自己,用于记录过程,暂时不能做为网友的参考。(1)首先感谢ElasticSearch(一):介绍、安装、文档分词_Men-DD的博客-CSDN博客.mhtmlhttps://menxu.blog.csdn.net/article/details/1259......
  • 华为OBS使用心得及配置OBS数据禁止下载
    近期参与了一个跟华为数据交换的项目,简单聊聊华为的数据交换方案及使用心得。先简单说一下背景:数据交换旨在建立企业互信,消除数据孤岛。行业数据都是各企业花费了大量精力整理得到的,一时间公开完全不可行。但是LLM的发展,基础模型需要越来越多的数据,这在倒逼企业合作,加之......
  • 关于c语言操作libwebsockets示例
    第一步,安装libwebsockets库,c语言编写的,默认安装引用库,配置相应的库及路径第二步:上代码main.h ////CreatedbyAdministratoron2020/5/1.// #ifndefMEDIA_MAIN_H#defineMEDIA_MAIN_H #define boolchar volatileintexit_sig=0; #defineMAX_PAYLOAD_SIZE 10......
  • 前端请求代理配置
    前端请求代理配置,解决跨域问题,适用于React、Vue项目优点:可以配置多个代理,可以灵活控制请求是否走代理。缺点:配置繁琐,前端请求资源时必须带上前缀。第一步安装yarnaddhttp-proxy-middleware--save第二步新建文件在项目的src目录下新建文件setupProxy.js,脚手架会......
  • Sring boot项目maven常用配置
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/......
  • 在Windows下配置Clang编译器
    PreferencesLinux&macOS平台LLVM相关工具链下载2019年,在Windows下配置Clang编译器VisualStudio2022中使用Clangclion使用clang编译Clion2020.3:如何设置Clang编译器这篇文章主要介绍如何在Windows使用Clang编译器来编译C/C++程序(在命令行下,clang是C编译器,编译C++......
  • eslint vscode 配置文件
    { "settingsSync.ignoredSettings":[], "vetur.validation.template":false, "workbench.iconTheme":"vscode-icons", "workbench.colorTheme":"OceanicNext", "settingsSync.ignoredExtens......