解决ElasticJob项目重启ZooKeeper注册冲突以及zkCli删除目录
创始人
2024-12-25 22:09:36
0

解决ElasticJob项目重启ZooKeeper注册冲突以及zkCli删除目录

背景

在现代化的分布式调度系统中,ElasticJob 是一个非常流行的选择。它利用 ZooKeeper 作为注册中心来管理任务分片。然而,有时在项目重启时,会遇到 ZooKeeper 注册冲突的问题,即任务名已在注册中心存在。本文将详细讲解如何解决此问题,以及如何使用 zkCli 删除ZooKeeper的目录。

问题描述

ElasticJob 重启时的注册冲突

使用 ElasticJob 的最新版本(3.0.1)时,重启项目会碰到 ZooKeeper 注册冲突的问题。具体表现为,因定时任务使用了代理,导致项目重启时报任务名冲突,提示任务已经在注册中心存在。

zkCli 删除目录

删除ZooKeeper节点目录也是我们维护和管理ZooKeeper时常见的操作。当需要清理已经废弃的节点时,删除操作显得尤为重要。

解决方案

依赖配置

首先,确保项目中使用的是 ElasticJob 的最新版本:

     org.apache.shardingsphere.elasticjob     elasticjob-lite-spring-boot-starter     3.0.1  

使用自定义的 JobClassNameProvider

  1. 问题原因
    定时任务使用了代理,默认情况下会读取代理类名称,而不是原始类名称,导致任务名冲突。

  2. 解决思路
    自定义一个 JobClassNameProvider,在项目重启时,确保读取到的是原始类名称,而不是代理类名称。

  3. 实现自定义 JobClassNameProvider

public class CustomJobClassNameProvider implements JobClassNameProvider {     @Override     public String getJobClassName(ElasticJob elasticJob) {         String elasticJobClassName = ClassUtils.getUserClass(elasticJob).getName();         return AopUtils.isAopProxy(elasticJob) ? elasticJobClassName : elasticJob.getClass().getName();     } } 

在这里,我们使用 ClassUtils.getUserClass(elasticJob).getName() 方法获取原始类名,这样就避免了代理类引起的冲突问题。

  1. 注册自定义类
    在项目的 src/main/resources 目录下新建一个 META-INF 目录,在 META-INF 目录下创建 services 目录,创建一个名为 org.apache.shardingsphere.elasticjob.lite.internal.setup.JobClassNameProvider 的文件,内容如下:
你的类全路径名,例如:com.example.CustomJobClassNameProvider 

使用 zkCli 命令操作ZooKeeper

以下是常用的 zkCli 操作步骤:

  1. 进入 ZooKeeper 安装目录的 bin 文件夹

    cd /var/www/data/zookeeper/zookeeper-3.8.0/bin 
  2. 启动 zkCli

    ./zkCli.sh 
  3. 查看节点目录

    [zk: localhost:2181(CONNECTED) 21] ls / 
  4. 删除节点目录
    删除 /elasticjob-admin-api-v0.7 目录及其子目录:

    [zk: localhost:2181(CONNECTED) 22] deleteall /elasticjob-admin-api-v0.7 

总结

通过自定义 JobClassNameProvider,可以有效解决 ElasticJob 在重启时引起的 ZooKeeper 注册冲突问题。使用 zkCli 也可以方便地管理和删除 ZooKeeper 节点,这对于维护一个健康的 ZooKeeper 集群系统至关重要。

希望这篇文章能够帮助你解决 ElasticJob 项目重启冲突以及 ZooKeeper 节点管理的问题。如果你有其他的疑问或更好的解决方案,欢迎在评论区留言讨论!

相关内容

热门资讯

透视透视挂!多乐辅助器免费版,... 透视透视挂!多乐辅助器免费版,拱趴大菠萝怎么开挂(透视)开挂辅助器(哔哩哔哩)1、多乐辅助器免费版破...
两分钟技法!科乐填坑辅助器怎么... 两分钟技法!科乐填坑辅助器怎么用,玄龙辅助工具(辅助)本来存在有神器(哔哩哔哩)1、实时科乐填坑辅助...
透视窍门!约局吧开挂神器是真的... 透视窍门!约局吧开挂神器是真的吗,欢乐达人猜猜乐友挂吗(辅助)原来真的是有脚本(哔哩哔哩)1、游戏颠...
透视诀窍!拱趴大菠萝辅助神器,... 透视诀窍!拱趴大菠萝辅助神器,WPK靠谱好像真的是有插件,第7分钟教程(有挂解密)1、该软件可以轻松...
透视实锤!关春天辅助凑一桌,p... 透视实锤!关春天辅助凑一桌,pokemmo脚本手机版(透视)开挂辅助教程(哔哩哔哩)1、任何关春天辅...
两分钟办法!新海贝辅助器试用,... 两分钟办法!新海贝辅助器试用,新道游修改器(辅助)其实是真的平台(哔哩哔哩)暗藏猫腻,小编详细说明新...
透视指南!德州圈脚本,潘潘讲故... 透视指南!德州圈脚本,潘潘讲故事辅助器(辅助)都是是有插件(哔哩哔哩)1、潘潘讲故事辅助器辅助器安装...
透视秘籍!德普之星辅助软件,德... 透视秘籍!德普之星辅助软件,德普之星辅助软件一贯真的有工具,三分钟教程(有挂攻略)1、许多玩家不知道...
受玩家影响!福建天天开心辅助工... 受玩家影响!福建天天开心辅助工具,约局吧开挂神器是真的吗(透视)开挂辅助插件(哔哩哔哩)1、下载好福...
四分钟模板!欢聚水鱼脚本下载,... 四分钟模板!欢聚水鱼脚本下载,财神十三张有挂辅助吗(辅助)真是有挂下载(哔哩哔哩)1、财神十三张有挂...