天天看点

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: [email protected]
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:更换事件追踪数据源应用启动报错
  4. 或者:
  5. 给作业一个新的作业名称,这样就会创建一个新的作业。

继续阅读