博主在上一篇博客中介绍了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解决
因此,解决这个问题有三种方法(博主能想到的):
-
换成原来的事件追踪配置,很显然应用是根据ZooKeeper中的作业配置信息来配置作业执行的各种环境,只要当前的作业配置信息和ZooKeeper中的作业配置信息一致即可。
-
将本地作业配置信息覆盖注册中心的作业配置信息,需要设置overwrite参数为true(默认为false),每次启动时都将使用本地的作业配置(即以本地的作业配置为主,不然本地修改作业配置不会起作用)。
或者:
-
给作业一个新的作业名称,这样就会创建一个新的作业。
这个问题还是比较容易解决的,了解ElasticJob中作业的执行原理对于解决这个问题是很有帮助的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)