解决项目集成xxl-job时,出现启动因获取不到数据源而卡住的问题。

项目集成XXL-Job调度中心时遭遇启动卡顿问题,深入排查发现与SpringBoot默认数据源Hikari冲突。通过禁用自动配置解决,确保程序正常执行。

一、问题描述

项目集成xxl-jbo的调度中心时,项目启动当执行到打印“init xxl-job admin scheduler success.”后,项目就卡住了无法执行下去。
在这里插入图片描述

二、排查问题

1.在JobScheduleHelper类下的第56行找到打印语句。
在这里插入图片描述
2.debuug下断点排查。当执行到了第73行时,执行不下去。
在这里插入图片描述
3.初步确定,在获取从数据源里数据库连接时卡住。往上排查,找到XxlJobAdminConfig类,是它提供的getAdminConfig方法。
在这里插入图片描述
4.加入断点,重启一次,查看数据。
在这里插入图片描述
在这里插入图片描述
可以看到这里的数据源使用springboot默认数据源hikari,而且是null。
当释放断点会程序会再次执行到这里,当释放4-5次后,数据出现变化了。
在这里插入图片描述
当此时,关掉断点,释放拦截后,程序可以正常的执行下去了。
如果不在getAdminConfig方法加断点,程序是一直获取不到数据源,也就一直卡着了!

三、解决问题

在一次试图禁止spring boot自动配置HikariDataSource的尝试中,问题得到解决。
在启动类加入如下注解

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

加入注解后,程序可以正常执行,每次关闭程序时,可以看到HikariDataSource都被关闭。
在这里插入图片描述

在 Spring Boot 1.x 项目集成 xxl-job 2.1.2 版本启动应用无法识别 `@XxlJob` 注解,这通常是由于以下原因导致的。 ### 1. 注解类未正确扫描 Spring Boot 1.x 使用的是较旧版本的 Spring Framework,可能需要手动配置组件扫描以确保 `@XxlJob` 注解能够被识别。可以在配置类中添加以下内容: ```java @Configuration @ComponentScan(basePackages = {"com.xxl.job"}) public class XxlJobConfig { } ``` 确保 `@XxlJob` 注解所在的包被正确扫描到。如果自定义了任务调度类的包路径,需要将该路径添加到 `basePackages` 中。 ### 2. 依赖版本不兼容 xxl-job 2.1.2 可能与 Spring Boot 1.x 的某些依赖存在兼容性问题。可以尝试在 `pom.xml` 中明确指定依赖版本,确保所有依赖兼容: ```xml <dependency> <groupId>com.xuxueli</groupId> <artifactId>xxl-job-core</artifactId> <version>2.1.2</version> </dependency> ``` 同,确保没有引入与 Spring Boot 1.x 不兼容的库。可以使用 Maven 的 `exclusion` 标签排除不兼容的依赖。 ### 3. 任务调度类命名不规范 xxl-job 默认会查找名为 `SampleXxlJob` 的任务调度类。如果使用了自定义类名,需要确保该类被正确注册为 Spring Bean,并且类中使用了 `@Component` 或 `@Service` 注解: ```java @Component public class MyXxlJob { @XxlJob("myJobHandler") public void myJob() { // 任务逻辑 } } ``` ### 4. 启用定任务 Spring Boot 1.x 中需要手动启用定任务支持。可以在主应用类或配置类上添加 `@EnableScheduling` 注解: ```java @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` ### 5. 检查配置文件 确保在 `application.yml` 或 `application.properties` 中正确配置了 xxl-job执行器信息,例如调度中心地址、执行器名称等: ```yaml xxl: job: admin: addresses: http://127.0.0.1:8080/xxl-job-admin executor: appname: xxl-job-executor-sample ip: 127.0.0.1 port: 9999 logpath: /data/applogs/xxl-job/jobhandler logretentiondays: 30 ``` ### 6. 日志与调试 如果以上方法仍无法解决问题,建议检查应用启动日志,查看是否有关于 `@XxlJob` 注解的加载信息或错误提示。可以通过日志定位具体问题,或者尝试升级到更高版本的 xxl-job 以获得更好的兼容性支持。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值