2021-07-30

使用Elastic Job的时候报“Job conflict with register center”,如何处理?

昨天,有群友反应根据之前这篇《使用Elastic Job实现定时任务》文章编写测试定时任务的时候,报了类似下面的这个错误:

Caused by: org.apache.shardingsphere.elasticjob.infra.exception.JobConfigurationException: Job conflict with register center. The job 'my-simple-job' in register center's class is 'com.didispace.chapter72.MySimpleJob', your job class is 'com.didispace.chapter74.MySimpleJob'	at org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService.checkConflictJob(ConfigurationService.java:86) ~[elasticjob-lite-core-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService.setUpJobConfiguration(ConfigurationService.java:70) ~[elasticjob-lite-core-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.internal.setup.SetUpFacade.setUpJobConfiguration(SetUpFacade.java:66) ~[elasticjob-lite-core-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobScheduler.<init>(JobScheduler.java:84) ~[elasticjob-lite-core-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap.<init>(ScheduleJobBootstrap.java:36) ~[elasticjob-lite-core-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration.registerClassedJob(ElasticJobBootstrapConfiguration.java:101) ~[elasticjob-lite-spring-boot-starter-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration.constructJobBootstraps(ElasticJobBootstrapConfiguration.java:84) ~[elasticjob-lite-spring-boot-starter-3.0.0.jar:3.0.0]	at org.apache.shardingsphere.elasticjob.lite.spring.boot.job.ElasticJobBootstrapConfiguration.createJobBootstrapBeans(ElasticJobBootstrapConfiguration.java:57) ~[elasticjob-lite-spring-boot-starter-3.0.0.jar:3.0.0]	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151]	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_151]	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_151]	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_151]	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.8.jar:5.3.8]	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.8.jar:5.3.8]	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.8.jar:5.3.8]	... 17 common frames omitted

根据错误消息Job conflict with register center. The job 'my-simple-job' in register center's,初步判断是ZooKeeper中存储的任务配置出现冲突:任务名一样,但实现类不同。

经过一番交流,原来他是使用公司测试环境的ZooKeeper来写的例子做测试,同时之前有同事(也是DD的读者)也写过类似的任务,因为配置的任务名称是拷贝的,所以出现了任务名称相对,但实现类不同的情况。

实际上,如果我们在一个大一些的团队做开发的时候,只要存在多系统的话,那么定时任务的重名其实是很有可能发生。比如:很多应用都可能存在一些定时清理某些资源的任务,就很可能起一样的名字,然后注册到同一个ZooKeeper,最后出现冲突。 那么有什么好办法来解决这个问题吗?

方法一:任务创建的统一管理

最原始的处理方法,就是集中的管理任务创建流程,比如:可以开一个Wiki页面,所有任务在这个页面上登记,每个人登记的时候,可以查一下想起的名字是否已经存在。如果存在了就再想一个名字,并做好登记。

这种方法很简单,也很好理解。但存在的问题是,当任务非常非常多的时候,这个页面内容就很大,维护起来也是非常麻烦的。

方法二:巧用Elastic Job的namespace属性来隔离任务名称

回忆一下之前第一篇写定时任务的时候,关于注册中心的配置是不是有下面两项:

elasticjob.reg-center.server-lists=localhost:2181elasticjob.reg-center.namespace=didispace原文转载:http://www.shaoqun.com/a/894413.html

跨境电商:https://www.ikjzd.com/

史泰博:https://www.ikjzd.com/w/2112

crowd:https://www.ikjzd.com/w/880

声网:https://www.ikjzd.com/w/2176


昨天,有群友反应根据之前这篇《使用ElasticJob实现定时任务》文章编写测试定时任务的时候,报了类似下面的这个错误:Causedby:org.apache.shardingsphere.elasticjob.infra.exception.JobConfigurationException:Jobconflictwithregistercenter.Thejob'my-simple-j
泰山索道价格多少?:http://www.30bags.com/a/419569.html
泰山索道以及旅游专线车相关事宜 :http://www.30bags.com/a/413523.html
泰山游览证如何办理 :http://www.30bags.com/a/413133.html
泰山有哪些景点?:http://www.30bags.com/a/419640.html
我在做饭他在下添 顶开双腿狠狠进入:http://lady.shaoqun.com/m/a/247774.html
大狼狗大干秦丽娟 狗狗巨大用力挺入她的体内 凌淑娟被一群野狗上:http://lady.shaoqun.com/m/a/246915.html
第一次和男朋友合体 做羞羞事做完男朋友拔不出来:http://www.30bags.com/m/a/249909.html
公又粗又长又大又深好爽 公么好舒服不要拔出来:http://www.30bags.com/m/a/249769.html
爱情故事:南恋北恋(爱情短篇):http://lady.shaoqun.com/a/428566.html
美国两州税务设置更新:阿拉斯加州和科罗拉多州新增交易平台辖区将于2021年8月1日起生效:https://www.ikjzd.com/articles/147064
起底亚马逊的新杀招--封品牌!哪些操作会触发?:https://www.ikjzd.com/articles/147061
男的喝醉了,晚上走错了房间,女的没有反抗。事后,男的:我亏大了!:http://lady.shaoqun.com/a/428567.html

No comments:

Post a Comment