广播
含义
广播模式下,一个任务会打到所有在线节点上执行。
测试
本地测试目的
- 验证任务类型为广播时,所有在线客户端会被调度执行任务
- 验证是否所有在线客户端都执行成功后,该批次才算成功
页面配置参数
配置项 | 配置内容 |
---|---|
任务名称 | 注解定时任务 |
组名称 | 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个节点
结果
目的一结果:所有节点都接收到调度请求
目的二结果:当所有在线客户端都执行成功后,该批次才算成功,其中一个执行失败该批次则为失败
结论
- 当任务类型为广播时,所有在线客户端会被调度执行任务
- 所有在线客户端都执行成功后,该批次才算成功,一个客户端执行失败则整个批次状态为失败