Skip to content

广播

含义

广播模式下,一个任务会打到所有在线节点上执行。

测试

本地测试目的

  • 验证任务类型为广播时,所有在线客户端会被调度执行任务
  • 验证是否所有在线客户端都执行成功后,该批次才算成功

页面配置参数

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

客户端代码

java
@Slf4j
@Component
@JobExecutor(name = "testSnailJobWithAnnotation")
public class TestSnailJobWithAnnotation {
  	@Autowired
    private Environment env;
  
    public ExecuteResult jobExecute(JobArgs jobArgs) {
        log.info("定时任务执行成功.参数值:{}", jobArgs);
        SnailJobLog.REMOTE.info("REMOTE日志.参数值:{}", jobArgs);
        SnailJobLog.REMOTE.info("REMOTE日志.当前节点{}", env.getProperty("server.port"));
//        int i = 1 / 0;
        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. 所有在线客户端都执行成功后,该批次才算成功,一个客户端执行失败则整个批次状态为失败