阿里巴巴任务调度SchedulerX支持一次性任务

简介: 阿里巴巴任务调度SchedulerX2.0支持一次性任务

应用场景

未来固定时间点跑一次,任务自动销毁。常见场景

  • 订单超时未支付自动关闭
  • 定时日历提醒


优势

精准时刻

SchedulerX的一次性任务与延时消息相比,没有固定延迟多少时间或者在多少天内的限制,可以支持到未来任意时间点,使用简单。


丰富的任务类型

SchedulerX一次性任务可以适用所有任务类型,比如java、http、shell任务。也可以适用所有分布式模型,比如单机、广播、分片、MapReduce等。


可视化运维

SchedulerX的一次性任务,和其他任务一样,有可视化的界面可以看到和查询,甚至可以在调度时间来临之前随意修改任务参数。

支持失败自动重试等功能。


用法

通过API创建one_time任务

api sdk升级到1.0.6以上版本

<dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-schedulerx2</artifactId>
      <version>1.0.6</version>
</dependency>

schedulerx-worker版本需要升级到1.3.4以上,以springboot starter为例

<dependency>
      <groupId>com.aliyun.schedulerx</groupId>
      <artifactId>schedulerx2-spring-boot-starter</artifactId>
      <version>1.3.4</version>
</dependency>


创建任务,timeType设置为5,代码如下:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobRequest;
import com.aliyuncs.schedulerx2.model.v20190430.CreateJobResponse;
public class CreateJavaJob {
    public static void main(String[] args) throws Exception {
        // Open API 的接入点,具体查看上表支持地域列表以及购买机器地域填写
        String regionId = "public";
        //鉴权使用的 AccessKeyId,由阿里云官网控制台获取
        String accessKeyId = "xxxxxxxx";
        //鉴权使用的 AccessKeySecret,由阿里云官网控制台获取
        String accessKeySecret = "xxxxxxxxx";
        //产品名称
        String productName ="schedulerx2";
        //对照支持地域列表选择Domain填写
        String domain ="schedulerx.aliyuncs.com";
        //构建 OpenApi 客户端
        DefaultProfile.addEndpoint(regionId, productName, domain);
        DefaultProfile defaultProfile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(defaultProfile);
        CreateJobRequest request = new CreateJobRequest();
        request.setJobType("java");
        request.setExecuteMode("standalone");
        request.setDescription("test");
        request.setName("一次性任务测试");
        request.setClassName("com.alibaba.schedulerx.test.processor.HelloWorldJob3");
        //timeType=5表示一次性任务
        request.setTimeType(5);
        //yyyy-MM-dd HH:mm:ss
        request.setTimeExpression("2021-12-15 12:11:00");
        request.setNamespace("433d8b23-06e9-408c-aaaa-90d4d1b9a4af");
        request.setGroupId("xueren_sub");
        // 监控报警
        request.setTimeoutEnable(true);
        request.setTimeoutKillEnable(true);
        request.setFailEnable(true);
        request.setTimeout(12300L);
        // 高级配置,配置失败自动重试
        request.setMaxAttempt(3);
        request.setAttemptInterval(30);
        CreateJobResponse response = client.getAcsResponse(request);
        if (response.getSuccess()) {
            System.out.println("jobId=" + response.getData().getJobId());
        } else {
            System.out.println(response.getMessage());
        }
    }   
}


控制台可视化

通过API新建任务后,可以在控制台看到一次性任务如下图


任务实现

和其他任务实现一致,任务执行完,调度平台会自动清理任务,客户端不需要删除任务

import com.alibaba.schedulerx.worker.domain.JobContext;
import com.alibaba.schedulerx.worker.processor.JavaProcessor;
import com.alibaba.schedulerx.worker.processor.ProcessResult;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;
@Component
public class HelloWorldJob3 extends JavaProcessor {
    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("hello HelloWorldJob3");
        return new ProcessResult(true);
    }
}

查看历史执行记录

因为一次性任务跑完就删了,无法通过任务搜索执行列表,不过可以通过日志服务查看任务历史执行的日志。

目录
相关文章
|
Java Docker 容器
Docker 安装 JDK
一、查看 JDK 版本 访问 JDK 镜像库地址:https://hub.docker.com/_/openjdk/tags。 可以通过 Tags 查看其他版本的 JDK,默认是最新版本 open:idk ,你也可以在下拉列表中找到其他你想要的版本。 二、拉取 JDK 镜像 拉取 jdk8 的镜像: docker pull openjdk:8 这将从Docker Hub上拉取名为"openjdk"的官方仓库中的JDK 8镜像。一旦拉取完成,您就可以在容器中使用JDK 8了。 三、查看已下载的镜像 使用docker images命令可以列出所有本地已下载的Docker镜像: docker ima
6353 1
|
人工智能 运维 Cloud Native
阿里云Serverless计算产品入选Gartner®报告「领导者」象限!
近日,Gartner® 发布了 2025 年度全球《云原生应用平台魔力象限》报告,阿里云凭借 Serverless 应用引擎 SAE(以下简称 SAE)和函数计算 FC,成为亚太地区唯一入选「领导者象限」的科技公司。
1118 18
|
安全 Java API
深入解析 Spring Security 配置中的 CSRF 启用与 requestMatchers 报错问题
本文深入解析了Spring Security配置中CSRF启用与`requestMatchers`报错的常见问题。针对CSRF,指出默认已启用,无需调用`enable()`,只需移除`disable()`即可恢复。对于`requestMatchers`多路径匹配报错,分析了Spring Security 6.x中方法签名的变化,并提供了三种解决方案:分次调用、自定义匹配器及降级使用`antMatchers()`。最后提醒开发者关注版本兼容性,确保升级平稳过渡。
1802 2
|
IDE Linux KVM
云计算|OpenStack|社区版OpenStack安装部署文档(十二--- openstack的网络模型解析---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(十二--- openstack的网络模型解析---Rocky版)
823 0
|
SQL 存储 算法
SpringBoot整合ShardingSphere实现分表分库&读写分离&读写分离+数据库分表
SpringBoot整合ShardingSphere实现分表分库&读写分离&读写分离+数据库分表
3823 0
SpringBoot整合ShardingSphere实现分表分库&读写分离&读写分离+数据库分表
|
资源调度 数据可视化 容灾
Spring Cloud Alibaba定时任务
Spring Cloud Alibaba定时任务是阿里巴巴开发的一款低延时、高可用、可视化的任务调度产品(定时、任务依赖编排、分布式跑批),支持日志服务、监控大盘、报警监控。
3933 2
|
运维 资源调度 监控
说说Spring定时任务如何大规模企业级运用
聊下java体系中Spring提供的定时任务方案的原理及其企业化运用过程中的一些问题,如何让现有的spring定时任务满足企业级运行需要。
1509 0
|
消息中间件 Java Spring
Springboot 集成Rabbitmq之延时队列
Springboot 集成Rabbitmq之延时队列
720 0
|
运维 资源调度 调度
阿里巴巴任务调度SchedulerX兼容XXL-JOB
阿里巴巴任务调度SchedulerX2.0兼容XXL-JOB任务接口,支持@XxlJob新注解和@JobHandler老注解方式,用户不需要修改一行代码,即可以将XXL-JOB任务在SchedulerX2.0平台上托管。
5031 0