Skip to content

含义

集群模式下,一个任务会根据路由策略只打到一个节点上执行。

如何使用

本地测试目的

  • 验证任务类型为集群时,只有一个客户端会被调度执行任务
  • 验证日志是否可以正常记录在客户端、服务端

页面配置参数

配置项配置内容
任务名称注解定时任务
组名称service_plat
状态启用
任务类型集群
执行器类型java
执行器名称testSnailJobWithAnnotation
方法参数
路由策略轮询
阻塞策略丢弃
触发类型固定时间
间隔时长60秒
超时时间(秒)60秒
最大重试次数0
重试间隔1秒

客户端代码

java
@Slf4j
@Component
@JobExecutor(name = "testSnailJobWithAnnotation")
public class TestSnailJobWithAnnotation {
    public ExecuteResult jobExecute(JobArgs jobArgs) {
        log.info("定时任务执行成功.参数值:{}", jobArgs);
        SnailJobLog.LOCAL.info("LOCAL日志.参数值:{}", jobArgs);
        SnailJobLog.REMOTE.info("REMOTE日志.参数值:{}", jobArgs);
        return ExecuteResult.success("测试注解方式的定时任务成功");
    }
}

Idea启动多个节点配置

shell
server.port=web端口 spring.profiles.active=执行环境
-Dserver.port=9901 -Dspring.profiles.active=dev-one
-Dserver.port=9902 -Dspring.profiles.active=dev-two
-Dserver.port=9903 -Dspring.profiles.active=dev-three

服务端查看节点信息

同时启动3个节点

结果

任务调度结果

只有一个节点接收到的调度请求

日志执行结果

客户端本地日志正常打印、服务端线上日志正常记录

总结

  1. 当任务类型为集群时,只会有一个节点执行调度任务
  2. 服务端日志上报正常,客户端日志打印正常