elasticjob jobProperties内的属性是有限定,不能直接put,限定代码在public final class JobProperties 内如下部分:
public void put(final String key, final String value) {
JobPropertiesEnum jobPropertiesEnum = JobPropertiesEnum.from(key);
if (null == jobPropertiesEnum || null == value) {
return;
}
map.put(jobPropertiesEnum, value);
}
此外在gson初始化,get等地方都有限定,以增加一个job_group为例,需要修改如下地方。
abstract class AbstractJobConfigurationGsonTypeAdapter的getJobProperties方法。
private JobProperties getJobProperties(final JsonReader in) throws IOException {
JobProperties result = new JobProperties();
in.beginObject();
while (in.hasNext()) {
switch (in.nextName()) {
case "job_exception_handler":
result.put(JobProperties.JobPropertiesEnum.JOB_EXCEPTION_HANDLER.getKey(), in.nextString());
break;
case "executor_service_handler":
result.put(JobProperties.JobPropertiesEnum.EXECUTOR_SERVICE_HANDLER.getKey(), in.nextString());
break;
case "job_group":
result.put(JobProperties.JobPropertiesEnum.JOB_GROUP.getKey(), in.nextString());
break;
default:
break;
}
}
in.endObject();
return result;
}
getJobCoreConfiguration方法:
private JobCoreConfiguration getJobCoreConfiguration(final String jobName, final String cron, final int shardingTotalCount,
final String shardingItemParameters, final String jobParameter, final boolean failover,
final boolean misfire, final String description,
final JobProperties jobProperties) {
return JobCoreConfiguration.newBuilder(jobName, cron, shardingTotalCount)
.shardingItemParameters(shardingItemParameters).jobParameter(jobParameter).failover(failover).misfire(misfire).description(description)
.jobProperties(JobProperties.JobPropertiesEnum.JOB_EXCEPTION_HANDLER.getKey(), jobProperties.get(JobProperties.JobPropertiesEnum.JOB_EXCEPTION_HANDLER))
.jobProperties(JobProperties.JobPropertiesEnum.EXECUTOR_SERVICE_HANDLER.getKey(), jobProperties.get(JobProperties.JobPropertiesEnum.EXECUTOR_SERVICE_HANDLER))
.jobProperties(JobProperties.JobPropertiesEnum.JOB_GROUP.getKey(), jobProperties.get(JobProperties.JobPropertiesEnum.JOB_GROUP))
.build();
}
public final class JobSettingsAPIImpl类的buildSimpleJobSettings
private void buildSimpleJobSettings(final String jobName, final JobSettings result, final LiteJobConfiguration liteJobConfig) {
result.setJobName(jobName);
result.setJobType(liteJobConfig.getTypeConfig().getJobType().name());
result.setJobClass(liteJobConfig.getTypeConfig().getJobClass());
result.setShardingTotalCount(liteJobConfig.getTypeConfig().getCoreConfig().getShardingTotalCount());
result.setCron(liteJobConfig.getTypeConfig().getCoreConfig().getCron());
result.setShardingItemParameters(liteJobConfig.getTypeConfig().getCoreConfig().getShardingItemParameters());
result.setJobParameter(liteJobConfig.getTypeConfig().getCoreConfig().getJobParameter());
result.setMonitorExecution(liteJobConfig.isMonitorExecution());
result.setMaxTimeDiffSeconds(liteJobConfig.getMaxTimeDiffSeconds());
result.setMonitorPort(liteJobConfig.getMonitorPort());
result.setFailover(liteJobConfig.getTypeConfig().getCoreConfig().isFailover());
result.setMisfire(liteJobConfig.getTypeConfig().getCoreConfig().isMisfire());
result.setJobShardingStrategyClass(liteJobConfig.getJobShardingStrategyClass());
result.setDescription(liteJobConfig.getTypeConfig().getCoreConfig().getDescription());
result.setReconcileIntervalMinutes(liteJobConfig.getReconcileIntervalMinutes());
result.getJobProperties().put(JobPropertiesEnum.EXECUTOR_SERVICE_HANDLER.getKey(),
liteJobConfig.getTypeConfig().getCoreConfig().getJobProperties().get(JobPropertiesEnum.EXECUTOR_SERVICE_HANDLER));
result.getJobProperties().put(JobPropertiesEnum.JOB_EXCEPTION_HANDLER.getKey(), liteJobConfig.getTypeConfig().getCoreConfig().getJobProperties().get(JobPropertiesEnum.JOB_EXCEPTION_HANDLER));
result.getJobProperties().put(JobPropertiesEnum.JOB_GROUP.getKey(),
liteJobConfig.getTypeConfig().getCoreConfig().getJobProperties().get(JobPropertiesEnum.JOB_GROUP));
}