原有项目相关配置
项目使用的组件及版本 spring mvc+elastic-job+dubbo+zookeeper
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.12</version>
</dependency>
<!-- zk依赖 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
</dependency>
<!-- zk客户端 -->
</dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>2.12.0</version>
</dependency>
<!-- elastic-job依赖 -->
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<artifactId>quartz</artifactId>
<groupId>org.quartz-scheduler</groupId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>
job.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"
xmlns:job="http://www.dangdang.com/schema/ddframe/job"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.dangdang.com/schema/ddframe/reg
http://www.dangdang.com/schema/ddframe/reg/reg.xsd
http://www.dangdang.com/schema/ddframe/job
http://www.dangdang.com/schema/ddframe/job/job.xsd
">
<!--配置作业注册中心 -->
<reg:zookeeper id="regCenter" server-lists="${dubbo.registry}" namespace="yx-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
<!-- 配置作业-->
<job:simple id="XXX" class="XXXX" registry-center-ref="regCenter" cron="0 0 0 * * ?" sharding-total-count="1" overwrite="true" />
<job:simple id="XXXXX" class="XXXXX" registry-center-ref="regCenter" cron="0 5 0 * * ?" sharding-total-count="10" overwrite="true" />
</beans>
升级后项目配置
由于zookeeer该版本漏洞需要升级版本至3.6.3改动后的配置
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.12</version>
</dependency>
<!-- elastic-job新依赖 -->
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-core</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere.elasticjob</groupId>
<artifactId>elasticjob-lite-spring-namespace</artifactId>
<version>3.0.1</version>
</dependency>
<!-- zk依赖
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.3</version>
</dependency> -->
<!-- zk客户端
</dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>2.12.0</version>
</dependency> -->
<!-- elastic-job依赖
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<artifactId>quartz</artifactId>
<groupId>org.quartz-scheduler</groupId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency> -->
job.xml
- 需要调整命名空间
- job命名空间只能通过bean指定
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:elasticjob="http://shardingsphere.apache.org/schema/elasticjob"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://shardingsphere.apache.org/schema/elasticjob
http://shardingsphere.apache.org/schema/elasticjob/elasticjob.xsd
">
<!--配置作业注册中心 -->
<elasticjob:zookeeper id="regCenter" server-lists="${dubbo.registry}" namespace="my-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
<!-- 配置作业 Bean -->
<bean id="XXX" class="XXXXX"/>
<bean id="XXXX" class="XXXXXX"/>
<!-- 配置基于 class 的作业调度 -->
<elasticjob:job id="XXXXX" job-ref="XXX" registry-center-ref="regCenter" cron="0 0 0 * * ?" sharding-total-count="1" overwrite="true" />
<elasticjob:job id="XXXXXX" job-ref="XXXX" registry-center-ref="regCenter" cron="0 5 0 * * ?" sharding-total-count="10" overwrite="true" />
</beans>
以下是遇到的问题及解决办法:
服务运行时创建路径时zookeeper打印信息:
Received packet at server of unknown type 19
程序报错:
2022-05-18 20:14:22,432|WARN|localhost-startStop-1-SendThread(127.0.0.1:2181)|org.apache.zookeeper.ClientCnxn$SendThread|run|L121|10.249.128.199|YX|proposal|1|Session 0x100028024ff0000 for sever 127.0.0.1/127.0.0.1:2181, Closing socket connection. Attempting reconnect except it is a SessionExpiredException. org.apache.zookeeper.ClientCnxn$EndOfStreamException: Unable to read additional data from server sessionid 0x100028024ff0000, likely server has closed socket
at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:77) ~[zookeeper-3.6.3.jar:3.6.3]
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350) ~[zookeeper-3.6.3.jar:3.6.3]
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1290) [zookeeper-3.6.3.jar:3.6.3]
|$|$|
2022-05-18 20:14:22,432|ERROR|localhost-startStop-1|org.apache.curator.framework.imps.CuratorFrameworkImpl|logError|L121|10.249.128.199|YX|proposal|1|Ensure path threw exception org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /my-job
at org.apache.zookeeper.KeeperException.create(KeeperException.java:106) ~[zookeeper-3.6.3.jar:3.6.3]
at org.apache.zookeeper.KeeperException.create(KeeperException.java:54) ~[zookeeper-3.6.3.jar:3.6.3]
at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:1734) ~[zookeeper-3.6.3.jar:3.6.3]
at org.apache.curator.utils.ZKPaths.mkdirs(ZKPaths.java:351) ~[curator-client-5.1.0.jar:?]
at org.apache.curator.framework.imps.NamespaceImpl$1.call(NamespaceImpl.java:90) ~[curator-framework-5.1.0.jar:5.1.0]
at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:93) ~[curator-client-5.1.0.jar:?]
at org.apache.curator.framework.imps.NamespaceImpl.fixForNamespace(NamespaceImpl.java:83) ~[curator-framework-5.1.0.jar:5.1.0]
at org.apache.curator.framework.imps.CuratorFrameworkImpl.fixForNamespace(CuratorFrameworkImpl.java:719) ~[curator-framework-5.1.0.jar:5.1.0]
at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:187) ~[curator-framework-5.1.0.jar:5.1.0]
at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:35) ~[curator-framework-5.1.0.jar:5.1.0]
at org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter.isExisted(ZookeeperRegistryCenter.java:196) ~[elasticjob-registry-center-3.0.1.jar:3.0.1]
at org.apache.shardingsphere.elasticjob.lite.internal.storage.JobNodeStorage.isJobRootNodeExisted(JobNodeStorage.java:67) ~[elasticjob-lite-core-3.0.1.jar:3.0.1]
at org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService.checkConflictJob(ConfigurationService.java:80) ~[elasticjob-lite-core-3.0.1.jar:3.0.1]
at org.apache.shardingsphere.elasticjob.lite.internal.config.ConfigurationService.setUpJobConfiguration(ConfigurationService.java:70) ~[elasticjob-lite-core-3.0.1.jar:3.0.1]
at org.apache.shardingsphere.elasticjob.lite.internal.setup.SetUpFacade.setUpJobConfiguration(SetUpFacade.java:66) ~[elasticjob-lite-core-3.0.1.jar:3.0.1]
at org.apache.shardingsphere.elasticjob.lite.internal.schedule.JobScheduler.<init>(JobScheduler.java:84) ~[elasticjob-lite-core-3.0.1.jar:3.0.1]
at org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap.<init>(ScheduleJobBootstrap.java:36) ~[elasticjob-lite-core-3.0.1.jar:3.0.1]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_101]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_101]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_101]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:207) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:310) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:295) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1361) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1208) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) ~[spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) [spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897) [spring-beans-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879) [spring-context-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551) [spring-context-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:401) [spring-web-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:292) [spring-web-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) [spring-web-5.2.21.RELEASE.jar:5.2.21.RELEASE]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4884) [catalina.jar:8.0.51]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5347) [catalina.jar:8.0.51]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) [catalina.jar:8.0.51]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1410) [catalina.jar:8.0.51]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1400) [catalina.jar:8.0.51]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_101]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_101]
由于依赖zookeeper.jar升级至3.6.3 , zookeeper服务需要升级至3.6.3问题解决