com.cloud.task.annotation.ScheduledTask Maven / Gradle / Ivy
package com.cloud.task.annotation;
import java.lang.annotation.*;
import org.springframework.stereotype.Component;
/**
* 〈ScheduledTask〉
*
* @author number68
* @create 2019/4/25
* @since 0.1
*/
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface ScheduledTask {
/**
* job名称
*/
String name();
/**
* job描述信息
*/
String description() default "";
/**
* cron表达式,用于控制作业触发时间
*/
String cron() default "";
/**
* job分片总数.
* 为1的时候,整个集群中只会有一个进程去执行该Job,在服务器数量没有波动的情况下,任务总会在固定某个进程上执行。
* 在作业执行前进程如果挂了,那作业会被分配到集群某一个存活的进程中.
*/
int shardingTotalCount() default 1;
/**
* 分片序列号和参数用等号分隔,多个键值对用逗号分隔
* 分片序列号从0开始,不可大于或等于作业分片总数
* 如:0=a,1=b,2=c
*/
String shardingItemParameters() default "";
/**
* 作业自定义参数
* 作业自定义参数,可通过传递该参数为作业调度的业务方法传参,用于实现带参数的作业
* 例:每次获取的数据量、作业实例从数据库读取的主键等
*/
String jobParameter() default "";
/**
* 是否开启任务执行失效转移
* 如果为true,当作业在执行过程中异常中断,作业会被分发到集群中存活的结点
*/
boolean failover() default true;
/**
* 是否开启错过任务重新执行
*/
boolean misfire() default false;
/**
* 是否用SpringBoot里的覆盖Zookeeper里的Job配置
*/
boolean overwrite() default false;
/**
* 是否流式处理数据
* 如果流式处理数据, 则fetchData不返回空结果将持续执行作业
* 如果非流式处理数据, 则处理数据完成后作业结束
*/
boolean streamingProcess() default false;
/**
* 监控作业运行时状态,幂等机制(monitorExecution),来确保同一条数据不会被多个Job同时处理,避免同一条数据被同一个Job实例的多个线程处理。
* 每次作业执行时间和间隔时间均非常短的情况,建议不监控作业运行时状态以提升效率。
* 因为是瞬时状态,所以无必要监控。请用户自行增加数据堆积监控。并且不能保证数据重复选取,应在作业中实现幂等性。
* 每次作业执行时间和间隔时间均较长的情况,建议监控作业运行时状态,可保证数据不会重复选取。
*/
boolean monitorExecution() default true;
/**
* 作业监控端口
* 建议配置作业监控端口, 方便开发者dump作业信息。
* 使用方法: echo “dump” | nc 127.0.0.1 9888
*/
int monitorPort() default -1;
/**
* 最大允许的本机与注册中心的时间误差秒数
* 如果时间误差超过配置秒数则作业启动时将抛异常
* 配置为-1表示不校验时间误差
*/
int maxTimeDiffSeconds() default -1;
/**
* 作业分片策略实现类全路径,默认使用平均分配策略
*/
String jobShardingStrategyClass() default "";
/**
* 修复作业服务器不一致状态服务调度间隔时间
* 配置为小于1的任意值表示不执行修复,单位:分钟
*/
int reconcileIntervalMinutes() default 10;
/**
* 任务执行日志数据源,以名称获取(注意不是DataSource而是{@link com.dangdang.ddframe.job.event.JobEventConfiguration})
* 如果为空就使用系统缺省的:由`com.cloud.task.config.ScheduledTaskConfig`自动创建的`defaultJobEventConfiguration`Bean,参见{@link com.cloud.task.config.JobEventRdbConfiguration}
*/
String eventTraceRdbDataSource() default "";
/**
* 作业是否禁止自动启动
* 如果为true,在开始部署的时候作业不会自启动,即使到了触发时间,需要在控制台手动触发。
*/
boolean disabled() default false;
/**
* 前置后置任务监听实现类,需实现ElasticJobListener接口
*/
String listener() default "";
/**
* 前置后置任务分布式监听实现类,需继承AbstractDistributeOnceElasticJobListener类
*/
String distributedListener() default "";
/**
* 最后一个作业执行前的执行方法的超时时间,单位:毫秒
*/
long startedTimeoutMilliseconds() default Long.MAX_VALUE;
/**
* 最后一个作业执行后的执行方法的超时时间,单位:毫秒
*/
long completedTimeoutMilliseconds() default Long.MAX_VALUE;
/**
* 自定义异常处理类
*/
String jobExceptionHandler() default "com.dangdang.ddframe.job.executor.handler.impl.DefaultJobExceptionHandler";
/**
* 自定义业务处理线程池
*/
String executorServiceHandler() default "com.dangdang.ddframe.job.executor.handler.impl.DefaultExecutorServiceHandler";
}