返回顶部
首页 > 资讯 > 后端开发 > Python >@RefreshScope在Quartz触发器类导致异常问题解决分析
  • 860
分享到

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

@RefreshScopeQuartz异常Quartz触发器类异常 2023-02-10 18:02:07 860人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

背景

承接上篇,测试过程中又遇到了 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异常的资料请关注编程网其它相关文章!

--结束END--

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

本文链接: https://lsjlt.com/news/195618.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作