Java 提交 DolphinScheduler 任务
介绍
[DolphinScheduler]( 是一个分布式的大数据工作流调度系统,它可以帮助用户方便地进行任务调度和任务管理。同时,DolphinScheduler 还支持 Java 提交任务,使得开发者可以通过 Java 代码来提交任务并获取任务执行结果。
本文将介绍如何使用 Java 提交 DolphinScheduler 任务,并附上相应的代码示例。
准备工作
在开始之前,确保已经按照 DolphinScheduler 的官方文档进行了部署和配置。同时,还需要保证 Java 环境已经正确安装和配置。
Java 提交 DolphinScheduler 任务的步骤
步骤一:导入依赖
首先,在 Java 项目中,需要导入 DolphinScheduler 的客户端依赖。可以通过 Maven 或者 Gradle 进行导入。
<!-- Maven -->
<dependency>
<groupId>org.apache.dolphinscheduler</groupId>
<artifactId>dolphinscheduler-client</artifactId>
<version>1.3.0</version>
</dependency>
// Gradle
implementation 'org.apache.dolphinscheduler:dolphinscheduler-client:1.3.0'
步骤二:创建任务
接下来,可以通过 Java 代码来创建任务。首先,需要创建一个 DolphinScheduler 的连接客户端。
String host = "localhost"; // DolphinScheduler 的主机名或 IP 地址
int port = 12345; // DolphinScheduler 的端口号
DolphinSchedulerClient client = new DolphinSchedulerClient(host, port);
然后,可以使用 createProcessInstance
方法来创建一个任务实例。
int projectId = 1; // 项目 ID
String processDefinitionName = "testProcess"; // 流程定义名称
String processDefinitionJson = "{\"globalParams\":[],\"tasks\":[{\"name\":\"task1\",\"type\":\"SHELL\",\"params\":{\"rawScript\":\"echo 'Hello, DolphinScheduler!'\"},\"description\":\"\"}]}"; // 流程定义的 JSON
String processInstanceName = "testInstance"; // 任务实例名称
int queueId = 1; // 队列 ID
int workerGroupId = 1; // 工作组 ID
int timeout = 0; // 超时时间,单位为秒,0 表示不超时
int processInstanceId = client.createProcessInstance(projectId, processDefinitionName, processDefinitionJson, processInstanceName, queueId, workerGroupId, timeout);
步骤三:运行任务
任务创建成功后,可以使用 runProcessInstance
方法来运行任务。
client.runProcessInstance(processInstanceId);
步骤四:获取任务状态
可以使用 getProcessInstanceById
方法来获取任务的状态。
ProcessInstance processInstance = client.getProcessInstanceById(processInstanceId);
// 获取任务状态
ProcessInstanceStatus status = processInstance.getState();
步骤五:获取任务结果
任务运行完成后,可以使用 getTaskInstanceListByProcessId
方法来获取任务的执行结果。
List<TaskInstance> taskInstances = client.getTaskInstanceListByProcessId(processInstanceId);
for (TaskInstance taskInstance : taskInstances) {
// 获取任务执行结果
String result = taskInstance.getResult();
// 处理任务执行结果
// ...
}
步骤六:释放资源
最后,使用 close
方法来释放 DolphinScheduler 的连接资源。
client.close();
完整示例
下面是一个完整的示例,展示了如何使用 Java 提交 DolphinScheduler 任务并获取任务执行结果。
import org.apache.dolphinscheduler.api.client.DolphinSchedulerClient;
import org.apache.dolphinscheduler.api.enums.ProcessInstanceStatus;
import org.apache.dolphinscheduler.api.model.ProcessInstance;
import org.apache.dolphinscheduler.api.model.TaskInstance;
import java.util.List;
public class DolphinSchedulerExample {
public static void main(String[] args) {
String host = "localhost";
int port = 12345;
DolphinSchedulerClient client = new DolphinSchedulerClient(host, port);
try {
// 创建任务
int projectId = 1;
String processDefinitionName = "testProcess";
String processDefinitionJson = "{\"globalParams\":[],\"tasks\":[{\"name\":\"task1\",\"type\":\"SHELL\",\"params\":{\"rawScript\":\"echo 'Hello, DolphinScheduler!'\"},\"description\":\"\"}]}";
String processInstanceName = "testInstance";