org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobConfParser' defined in com.cxytiandi.elasticjob.autoconfigure.JobParserAutoConfiguration: Initialization of bean failed; nested exception is com.dangdang.ddframe.job.exception.JobConfigurationException: Job conflict with register center. The job 'MarketStrateValidatyJob' in register center's class is 'com.cnooc.crm.customer.strategy.task.MarketStrateValidatyJob', your job class is 'com.cnooc.crm.customer.strategy.server.task.MarketStrateValidatyJob'
场景还原:连接公司线上的dubbo+zookeeper 服务:MarketStrateValidatyJob本来的类位置在com.cnooc.crm.customer.strategy.task 后来移动到com.cnooc.crm.customer.strategy.server.task包下,结果就冲突了
原因是:连接公司的zookeeper这个时候注册中心 没有没有重启,注册中心依然中依然存在MarketStrateValidatyJob这个服务,移动之后,线上的就和线下的产生了冲突。
解决方案:修改name的值(再不行就连类名一并修改)
以下是修改之后的代码
/**
* 策略过期后,策略状态更新为“策略终止”
*每天00:01工作
* @author tangfan
* @date 2019/7/1
*/
@Slf4j
@ElasticJobConf(name = "MarketStrateJob", cron = "0 1 0 * * ? *",
shardingItemParameters = "0=a", description = "策略过期任务", overwrite = true, eventTraceRdbDataSource = "dataSource")
public class MarketStrateJob implements SimpleJob {
private final MarketStrateJobService marketStrateJobService;
@Autowired
public MarketStrateJob(MarketStrateJobService marketStrateJobService) {
this.marketStrateJobService = marketStrateJobService;
}
@Override
public void execute(ShardingContext shardingContext) {
// 编写执行的相关业务逻辑
log.info(String.format("------Thread ID: %s, 任务总片数: %s, 当前分片项: %s, 当前分片参数: %s",
Thread.currentThread().getId(), shardingContext.getShardingTotalCount(), shardingContext.getShardingItem(), shardingContext.getShardingParameter()));
//修改状态为4 策略终止
marketStrateJobService.updateExpireStatus();
log.info("修改失效策略状态为策略终止:" + new Date() + "执行完成");
}
}