ElasticJob‐Lite:更换事件追踪数据源应用启动报错

ElasticJob‐Lite:更换事件追踪数据源应用启动报错,第1张

ElasticJob‐Lite:更换事件追踪数据源应用启动报错

博主在上一篇博客中介绍了ElasticJob的事件追踪、整合Spring Boot以及部署ElasticJob-Lite-UI:

  • ElasticJob‐Lite:事件追踪 & 整合Spring Boot & 部署ElasticJob-Lite-UI

今天本来想介绍ElasticJob的作业监听器,在上面这篇博客的代码基础上,移除了事件追踪相关配置,然后启动应用,应用报错如下图所示:

分析

报错的原因很显然是找不到com.mysql.cj.jdbc.MysqlDataSource类,但是博主已经将事件追踪相关配置(数据库配置、事件追踪类型以及数据库依赖)都移除了,应用是怎么知道使用Mysql数据库作为事件追踪数据源?以及如何确定数据源的类名(Mysql版本不同,数据源类名存在差异)?所以,应用肯定是拉取了ZooKeeper中关于作业的配置信息。

查看my-job命名空间下MySimpleJob作业的配置信息:

get /my-job/MySimpleJob/config

可以发现以下关于事件追踪配置的信息:

# 数据源类名
dataSourceClassName: com.mysql.cj.jdbc.MysqlDataSource  
# 数据库配置
user: root
password: ITkaven@666.com
url: jdbc:mysql://localhost:3306/trace?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# 事件追踪类型
type: RDB
解决

因此,解决这个问题有三种方法(博主能想到的):

  1. 换成原来的事件追踪配置,很显然应用是根据ZooKeeper中的作业配置信息来配置作业执行的各种环境,只要当前的作业配置信息和ZooKeeper中的作业配置信息一致即可。

  2. 将本地作业配置信息覆盖注册中心的作业配置信息,需要设置overwrite参数为true(默认为false),每次启动时都将使用本地的作业配置(即以本地的作业配置为主,不然本地修改作业配置不会起作用)。

    或者:

  3. 给作业一个新的作业名称,这样就会创建一个新的作业。

这个问题还是比较容易解决的,了解ElasticJob中作业的执行原理对于解决这个问题是很有帮助的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5678608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存