@RefreshScope在Quartz 触发器类导致异常问题解决分析

 更新时间:2023年02月10日 17:12:17   作者:毕小宝  
这篇文章主要为大家介绍了@RefreshScope在Quartz 触发器类导致异常问题解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

背景

承接上篇,测试过程中又遇到了 Nacos Config 的动态刷新注解 @RefreshScope 与 Quartz 框架结合的问题,Bug 排查路上,顺手记录一下吧。

问题

有个模块使用了Quartz ,通过配置控制任务调度的周期和分组名称。

因为引用了动态配置,所以对每个注入类都加上了 @RefreshScope ,代码如下:

@Value("${quartz.task.cron}")
private String taskCron;
@Bean
public JobDetail taskJobDetail(){
    JobDetail jobDetail = JobBuilder.newJob(XXTaskJob.class)
            .withIdentity("taskName","taskGroup")
            .storeDurably()
            .build();
    return jobDetail;
}
@Bean
@RefreshScope
public Trigger taskTrigger() {
    Trigger trigger = TriggerBuilder.newTrigger()
            .forJob(taskJobDetail())
            .withIdentity("taskName","taskGroup")
            .startNow()
            .withSchedule(CronScheduleBuilder.cronSchedule(taskCron))
            .build();
    return trigger;
}

启动应用报错:

自动注入 Quartz 的 Scheduler 对象异常了,因为有了上次 RestTemplate 失效的经验,所以一猜就是这个注解的问题,去掉后果然正常了。

话说回来,到底 Quartz 注入的类到底能不能动态根据配置变动呢?如果真的要支持定时任务周期和分组名称动态变动,应该怎么改造呢?

启示录

今天看到两个关于编程的观点。

言论一:《现代编程工作的实质》

我真正担心的是,今天的很多编程没有任何乐趣,它只是集合别人的软件,把组件拼起来并启动,不需要太多的创造力。 我担心编程会变得太无聊,因为你没有机会做任何新鲜事。你的兴奋来自于看到机器产生出来的有趣结果,而不是来自创造新事物的过程。现在的乐趣变成,当你完成无聊的工作后,会突然得到一个很棒的结果,但在以前,工作本身并不乏味。

另一句来自 Redis 的作者:

大多数编程不再是艺术,也不再是高级工程。大多数程序都是微不足道的:编码人员只需要理解某些特定的接口,然后编写一些逻辑和胶水代码。 -- Antirez,Redis 的作者

工具人的悲哀!我还以为只有我有类似的感觉呢,SpringBoot 这么强大,开源工具这么丰富,任意一个第三方 jar 的引入,背后都是一个大黑盒,不经过透彻的测试,根本不知道有什么问题。

以上就是@RefreshScope在Quartz 触发器类导致异常问题解决分析的详细内容,更多关于@RefreshScope Quartz异常的资料请关注脚本之家其它相关文章!

相关文章

  • java中文转全拼工具类分享

    java中文转全拼工具类分享

    这篇文章主要介绍了一个JAVA将汉字转换为全拼的工具类,大参考使用吧
    2014-01-01
  • 一文彻底吃透SpringMVC中的转发和重定向

    一文彻底吃透SpringMVC中的转发和重定向

    大家应该都知道springmvc本来就会把返回的字符串作为视图名解析,然后转发到对应的视图,这篇文章主要给大家介绍了关于SpringMVC中转发和重定向的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • 详解Java中的悲观锁与乐观锁

    详解Java中的悲观锁与乐观锁

    乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展.这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人,文中详细介绍了悲观锁与乐观锁,需要的朋友可以参考下
    2021-05-05
  • Spring注解方式防止重复提交原理详解

    Spring注解方式防止重复提交原理详解

    这篇文章主要为大家详细介绍了Spring注解方式防止重复提交原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Android中Socket通信的实现方法概述

    Android中Socket通信的实现方法概述

    这篇文章主要介绍了Android中Socket通信的实现方法,很有实用价值,需要的朋友可以参考下
    2014-08-08
  • Java中MyBatis传入参数parameterType问题

    Java中MyBatis传入参数parameterType问题

    这篇文章主要介绍了Java中MyBatis传入参数parameterType问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 详解Java类型擦除机制

    详解Java类型擦除机制

    Java泛型是JDK 5引入的一个特性,它允许我们定义类和接口的时候使用参数类型,泛型在集合框架中被广泛使用。这篇文章主要介绍了Java类型擦除机制,需要的朋友可以参考下
    2019-07-07
  • Jmeter逻辑控制器事务控制器使用方法解析

    Jmeter逻辑控制器事务控制器使用方法解析

    这篇文章主要介绍了Jmeter逻辑控制器事务控制器使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • idea 修改项目名和module名称的操作

    idea 修改项目名和module名称的操作

    这篇文章主要介绍了idea 修改项目名和module名称的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 浅谈一下Java的线程并发

    浅谈一下Java的线程并发

    大家好,本篇文章主要讲的是浅谈一下Java的线程并发,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02

最新评论