XXL-JOB真的要凉了?出现了一个王炸级别的分布式任务调度与计算框架?( 三 )

 
停止docker-compose downStopping powerjob-worker-samples ... doneStopping powerjob-server... doneStopping powerjob-mysql... doneRemoving powerjob-worker-samples ... doneRemoving powerjob-server... doneRemoving powerjob-mysql... donecd PowerJobrm -rf powerjob-dataSpringBoot集成PowerJob添加相关maven依赖<dependency><groupId>tech.powerjob</groupId><artifactId>powerjob-worker-spring-boot-starter</artifactId><version>${latest.powerjob.version}</version></dependency>配置文件配置powerjob:worker:# akka 工作端口,可?。???27777akka-port: 27777# 接入应用名称,用于分组隔离,推荐填写 本 Java 项目名称app-name: ${spring.application.name}# 调度服务器地址,IP:Port 或 域名 , 多值逗号分隔server-address: 81.70.117.188:7700# 持久化方式,可?。???diskstore-strategy: disk# 任务返回结果信息的最大长度 , 超过这个长度的信息会被截断,默认值 8192max-result-length: 8192# 单个任务追加的工作流上下文最大长度,超过这个长度的会被直接丢弃 , 默认值 8192max-appended-wf-context-length: 8192处理器(Processor)开发
处理器概述基本概念PowerJob 支持 Python、Shell、HTTP、SQL 等众多通用任务的处理,开发者只需要引入依赖,在控制台配置好相关参数即可,关于这部分详见 官方处理器  , 此处不再赘述 。本章将重点阐述 Java 处理器开发方法与使用技巧 。

  • Java 处理器可根据代码所处位置划分为内置 Java 处理器和外置 Java 处理器,前者直接集成在宿主应用(也就是接入本系统的业务应用)中,一般用来处理业务需求;后者可以在一个独立的轻量级的 Java 工程中开发 , 通过 JVM 容器技术(详见容器章节)被 worker 集群热加载,提供 Java 的“脚本能力”,一般用于处理灵活多变的需求 。
  • Java 处理器可根据对象创建者划分为 SpringBean 处理器和普通 Java 对象处理器,前者由 Spring IOC 容器完成处理器的创建和初始化 , 后者则由 PowerJob 维护其生命周期 。如果宿主应用支持 Spring,强烈建议使用 SpringBean 处理器,开发者仅需要将 Processor 注册进 Spring IOC 容器(一个 @Component 注解或一句 bean 配置)即可享受 Spring 带来的便捷之处 。
  • Java处理器可根据功能划分为单机处理器、广播处理器、Map 处理器和 MapReduce 处理器 。
单机处理器(BasicProcessor)对应了单机任务,即某个任务的某次运行只会有某一台机器的某一个线程参与运算 。
广播处理器(BroadcastProcessor)对应了广播任务,即某个任务的某次运行会调动集群内所有机器参与运算 。
Map处理器(MapProcessor)对应了Map任务,即某个任务在运行过程中 , 允许产生子任务并分发到其他机器进行运算 。
MapReduce 处理器(MapReduceProcessor)对应了 MapReduce 任务,在 Map 任务的基础上 , 增加了所有任务结束后的汇总统计 。
入参 TaskContextTaskContext 包含了本次任务的上下文信息,具体信息如下
属性列表(红色标注的为常用属性)
属性名称
意义/用法
【XXL-JOB真的要凉了?出现了一个王炸级别的分布式任务调度与计算框架?】jobId
任务 ID , 开发者一般无需关心此参数
instanceId
任务实例 ID,全局唯一,开发者一般无需关心此参数
subInstanceId
子任务实例 ID , 秒级任务使用 , 开发者一般无需关心此参数
taskId
采用链式命名法的 ID,在某个任务实例内唯一,开发者一般无需关心此参数
taskName
task 名称,Map/MapReduce 任务的子任务的值为开发者指定,否则为系统默认值,开发者一般无需关心此参数
jobParams
任务参数
对于非工作流中的任务其值等同于控制台录入的任务参数;如果该任务为工作流中的任务且有配置节点参数信息,那么接收到的是节点配置的参数信息
instanceParams
任务实例参数
对于非工作流中的任务 其值 等同于 OpenAPI 传递的实例参数,非 OpenAPI 触发的任务则一定为空 。如果该任务为工作流中的任务那么这里实际接收到的是工作流上下文信息,建议使用 getWorkflowContext 方法获取上下文信息 


推荐阅读