jobmgr模块是一个任务执行框架,里面有一个定时任务,定时从数据库读取最新的script,并通过groovy load成class,以此实现动态更新脚本。
代码如下:
@Service("jobTemplateClassService")
public class JobTemplateClassServiceImpl extends ScheduledTaskExecutor implements JobTemplateClassService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Value("${galileo.api.endpoint}")
private String endPoint;
private String jobTemplateScriptListApi = "/job_template_script/list";
private String jobTemplateScriptGetApi = "/job_template_script/get";
private Map<String, Class<JobTemplate>> jobTemplateScriptMap = new HashMap<>();
@Autowired
private JobTemplateClassFactory jobTemplateClassFactory;
@Override
public Class<JobTemplate> getJobTemplateClass(String jobTemplateScriptUuid) {
Class<JobTemplate> jobTemplateClass = null;
if (null != jobTemplateScriptMap) {
jobTemplateClass = jobTemplateScriptMap.get(jobTemplateScriptUuid);
}
if (null == jobTemplateClass) {
JobTemplateScript jobTemplateScript = HttpClient.get(HttpUtils.buildRequestUrl(endPoint, jobTemplateScriptGetApi,
new Parameter(