0
点赞
收藏
分享

微信扫一扫

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


博主在上一篇博客中介绍了​​ElasticJob​​的事件追踪:

  • ​​ElasticJob‐Lite:事件追踪​​

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

ElasticJob‐Lite:更换事件追踪数据源应用启动报错_配置信息

分析

报错的原因很显然是找不到​​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‐Lite:更换事件追踪数据源应用启动报错_elastic_02

  4. 或者:
  5. ElasticJob‐Lite:更换事件追踪数据源应用启动报错_elastic-job_03

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

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


举报

相关推荐

0 条评论