当前位置: 首页 > news >正文

沈阳网站建设 南塔放单网站建设

沈阳网站建设 南塔,放单网站建设,界面做的比较好的网站,开发app软件需要多少钱解决ElasticJob项目重启ZooKeeper注册冲突以及zkCli删除目录 背景 在现代化的分布式调度系统中,ElasticJob 是一个非常流行的选择。它利用 ZooKeeper 作为注册中心来管理任务分片。然而,有时在项目重启时,会遇到 ZooKeeper 注册冲突的问题&…

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

背景

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

问题描述

ElasticJob 重启时的注册冲突

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

zkCli 删除目录

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

解决方案

依赖配置

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

<dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-spring-boot-starter</artifactId><version>3.0.1</version>
</dependency>

使用自定义的 JobClassNameProvider

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

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

  3. 实现自定义 JobClassNameProvider

public class CustomJobClassNameProvider implements JobClassNameProvider {@Overridepublic 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 节点管理的问题。如果你有其他的疑问或更好的解决方案,欢迎在评论区留言讨论!

http://www.yayakq.cn/news/981720/

相关文章:

  • 有没有做英语题的网站做网站能赚到钱吗
  • 百度右侧相关网站宁波市建设集团股份有限公司
  • 网站网络推广方法中国建筑招聘网官网
  • 乐山网站seo网站开发 微信 支付
  • 建设网站用什么代码写好呢贵州新农村建设专业网站
  • 部分网站为什么网页打不开的原因及解决方法网页策划案的范文
  • 建网站 教程推广平台软件
  • 建设网站需要那几部苏州企业网站制作开发
  • 建什么网站做cpa赣州网站建设
  • 2017做那个网站能致富网站对联广告图片
  • 企业seo网站营销推广网站开发的实施方案
  • 小说网站防盗做的最好的是软件开发联系电话
  • 海南省零售户电商网站网站开发这个专业前景怎样
  • 最新新闻事件东莞网站包年优化
  • 南京有关制作网站的公司个人网站建设流程 域名注册的选择
  • 工业设备网站源码视频教学互动网站建设
  • 网站建设毕业设计心得邯郸网站建设提供商
  • 简述网站设计基本流程重庆腊肠制作
  • 网站建设公司(推荐乐云践新)广州模板建站定制网站
  • 佛山网站建设的首选wordpress分类图片
  • 黄岛网站建设多少钱网站论坛推广方案
  • 昆山建设公司网站微帮推广平台怎么加入
  • 服装网站搭建计划书兰州网站建设招聘最新
  • 网站模板 简洁企业网上注册
  • 360网站推广学校网站进不去怎么办
  • 做外贸网站价位长沙营销网站建设公司
  • 网站建设移动端是什么意思tint pro wordpress
  • 将wordpress网站变成app三门县正规营销型网站建设地址
  • 温州网站建设制作微信分销合法吗
  • 个人免费网站创建入口黑龙江省公开招标信息网