有奖捉虫:行业应用 & 管理与支持文档专题 HOT
文档中心 > 微服务平台 TSF

操作场景

分布式任务调度实现了与 TSF 框架的无缝集成,您仅需要引用 SDK,按照规范编写并配置任务,即可实现任务触发、执行、停止等多种管理。
通过以下操作,您可快速体验 TSF 分布式任务调度功能的使用流程。

前提条件

1. 开始使用分布式任务调度之前,请确保您已正确配置 Maven 环境(参见 SDK 下载)。
2. 您可以选择基于 TSF 官方提供的 Demo 实现快速开发(参见 Demo 下载)。
3. 在控制台新建任务之前,您需提前部署好执行任务的服务实例/节点(参见 应用部署 完成应用程序包的发布部署)。

操作步骤

步骤1:添加 pom 依赖

在 pom.xml 文件中添加如下 dependency。
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>tct-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>

步骤2:启用任务调度 SDK

在 application.yml 文件中添加如下配置,启用任务调度 SDK。
tct
// 默认是false
enabled: true

步骤3:编写任务

通过实现分布式任务调度框架中的 ExecutableTaskTerminableTask 接口,编写任务。在 execute 方法中实现任务执行逻辑,在 cancel 方法中实现任务停止逻辑,示例如下:
package com.tencent.cloud.task;
?
import com.tencent.cloud.task.sdk.client.LogReporter;
import com.tencent.cloud.task.sdk.client.model.ExecutableTaskData;
import com.tencent.cloud.task.sdk.client.model.ProcessResult;
import com.tencent.cloud.task.sdk.client.model.ProcessResultCode;
import com.tencent.cloud.task.sdk.client.model.TerminateResult;
import com.tencent.cloud.task.sdk.client.remoting.TaskExecuteFuture;
import com.tencent.cloud.task.sdk.client.spi.ExecutableTask;
import com.tencent.cloud.task.sdk.client.spi.TerminableTask;
import org.apache.commons.lang3.RandomUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
?
import java.lang.invoke.MethodHandles;
?
/**
* 模拟简单的任务, 执行时间在10s ~ 15s之间, 可以终止。
*/
public class SimpleLogExecutableTask implements ExecutableTask,TerminableTask {
?
private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
?
@Override
public ProcessResult execute(ExecutableTaskData taskData) {
ProcessResult result = new ProcessResult();
try {
LogReporter.log(taskData,"start to execute SimpleLogExecutableTask...");
LogReporter.log(taskData,"hello, this is a demo for SimpleLogExecutableTask");
long sleepTime = RandomUtils.nextLong(10000, 15000);
//ThreadUtils.waitMs(sleepTime);
Thread.sleep(sleepTime);
result.setResultCode(ProcessResultCode.SUCCESS);
LogReporter.log(taskData,"success to execute SimpleLogExecutableTask... ");
} catch (InterruptedException e) {
result.setResultCode(ProcessResultCode.TERMINATED);
LogReporter.log(taskData,"task is terminated... ");
} catch (Throwable t) {
LOG.error(t.getMessage(), t);
result.setResultCode(ProcessResultCode.FAIL);
}
return result;
}
?
@Override
public TerminateResult cancel(TaskExecuteFuture future, ExecutableTaskData taskData) {
LogReporter.log(taskData,"task start to cancel");
future.cancel(true);
LogReporter.log(taskData,"task cancel success");
return TerminateResult.newTerminateSuccessResult();
}
}
说明
通过 Future 的 cancel 方法,不一定能停止正在运行中的任务,通常需要配合业务逻辑标识符的方式进行终止(参见 任务停止原理及实践)。

步骤4:在控制台新建任务

1. 登录 TSF 控制台
2. 在左侧菜单栏中,找到组件中心分类,单击分布式任务调度 > 任务管理,进入任务管理页面。
3. 在任务管理页面,单击新建任务,在新建任务的弹框中输入您的任务设置。 详细参数说明请参见 任务管理 文档。
?
?
4. 设置完成后,单击保存,所创建的任务将显示在任务列表中。

步骤5:查看任务执行情况

任务创建并启用后,将按照您预设的时间自动触发执行。 在 任务管理 的任务列表中,单击目标任务的任务 ID,即可进入该任务的详情页,查看任务的执行情况。
?
?

步骤6:停止任务执行

任务执行完成之前,您可通过单击操作列的停止执行,手动强行终止任务的此次执行。
说明
关于控制台操作的详细说明请参见 任务管理执行记录


http://www.vxiaotou.com