spring中的quartz调度问题

2023-11-06

1、SchedulerFactoryBean会自动启动。
当在spring文件中定义了多个SchedulerFactoryBean实例时,一定要小心,因为这些ScheduleFactoryBean自从load进程序里,就会自动启动。如果要手动控制,注意要将autoStartup属性设置为false。
2、SchedulerFactoryBean暴露的是Scheduler,而不是SchedulerFactoryBean。
SchedulerFactoryBean实现了FactoryBean接口,必须实现两个方法,一个是getObjectType,另外一个则是getObject;其中getObjectType定义了返回的类型应该为Scheduler,而getObject指定了返回的是其一个重要属性scheduler,这个scheduler就是我们要获得的调度。

若在配置文件里为SchedulerFactoryBean定义了id属性为"scheduler",则在程序里调用getBean时,需要注意getBean("scheduler")返回的是Scheduler对象

3、SchedulerFactoryBean中有两个很重要的属性,一个是scheduler,另外一个是schedulerFactoryClass,spring通过用schedulerFactoryClass做代理来产生调度,并把它赋给scheduler。
private Class schedulerFactoryClass = StdSchedulerFactory.class;
//如果你没有指定schedulerFactoryClass ,那么它用的是quartz中自带的调度工厂,
this.scheduler = createScheduler(schedulerFactory, this.schedulerName);
//这里的schedulerName默认传进来是空的,其实如果你不是用自己定义的schedulerFactoryClass
//恐怕也没有什么意义,因为createScheduler是这样调用的
return schedulerFactory.getScheduler();
//显然schedulerName并没有用到,除非是你自行写一个schedulerFactory,并做好相应处理,
//否则返回的这个scheduler一定是一个指定名称的调度
Scheduler sched = schedRep.lookup(getSchedulerName());
//这个sched就是要代理生成的scheduler,getSchedulerName只有一句话,如下:
cfg.getStringProperty(PROP_SCHED_INSTANCE_NAME,"QuartzScheduler");
//如果我们没有使用一些特殊的机制,那么返回的只能是一个固定的字符串。

如上说述,如果我们希望不进行改造,就在spring的配置文件中定义多个调度的方法来实现我们个性化的任务安排时,可能并不可行。因为spring配置的scheduler只能有一个,即使你定义了多个调度,那么其实实现的只有一个,只是所有你希望指向不同调度的id都会指向它罢了,而这个调度会包含了其它所有调度中的任务。

4、抱错:org.quartz.SchedulerException: Repeat Interval cannot be zero
场景:该错误通常是在引用了SimpleTriggerBean的时候没有为repeatCount和repeatInterval赋值发生的,很奇怪,SimpleTriggerBean有一个空构造函数,在里面直接为repeatCount赋了一个REPEAT_INDEFINITELY,这样,当其进入validate函数时,会抱错。而quartz中的SimpleTrigger这两个属性默认值均为0,不懂spring中为何这样处理。
5、quartz和crontab的区别
a、quartz属于用户级别,crontab则属于系统级别;
b、quartz调度的线程,所有线程共享一个jvm;crontab调度的则是应用,每个应用都独立的占用资源。
6、quartz中加入并发多线程分析
a、quartz本身是有线程池支持的,这个可以用org.quartz.threadPool.threadCount属性来设置线程池大小,quartz的任务可以由quartz的线程池自动调度
b、对每个任务也可能起多线程,但是需要对并发数量做控制,可以考虑使用commons-pools提供的对象池机制
FROM:http://itlife365.com/blog/?post=469
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring中的quartz调度问题 的相关文章

  • Spring Boot data-jpa 和 nativeQuery Postgres 转换

    我有一个习惯 Query在一个看起来像这样的存储库中 SELECT FROM topicaudit c14001 WHERE auditdate gt NOW AND auditdate lt NOW 1 hour INTERVAL AND
  • 如何在我的 HttpClient 执行器中遵循单一职责原则?

    我在用RestTemplate http docs spring io spring docs current javadoc api org springframework web client RestTemplate html as
  • Spring Security登录返回404

    我目前正在使用 Spring 框架开发我的博客 我正在实现 Spring Security 用于登录目的 一切都按预期进行 直到我提交始终返回 404 代码的登录凭据 这是我的 web xml 代码e
  • Spring Redis 排序键

    我在 Redis Spring Data Redis 中有以下键 localhost gt Keys 1 id 1 Name C5796 Site DRG1 2 id 2 Name CX1XE Site DG1 3 id 3 Name C5
  • 使用 API 密钥和机密保护 Spring Boot API

    我想保护 Spring Boot API 的安全 以便只有拥有有效 API 密钥和秘密的客户端才能访问它 但是 程序内部没有身份验证 使用用户名和密码的标准登录 因为所有数据都是匿名的 我想要实现的目标是所有 API 请求只能用于特定的第三
  • Spring boot - 嵌入式 Tomcat - 连接器定制器 - 无法添加 parseBodyMethods 属性

    最初的问题是当我使用 DELETE 方法发送http请求时 正文部分无法发送到服务器 经过谷歌搜索后 我发现本文 https stackoverflow com questions 41205062 requestbody not acce
  • 原型 Bean 未按预期自动装配

    测试控制器 java RestController public class TestController Autowired private TestClass testClass RequestMapping value test me
  • Bean 属性不可读或具有无效的 getter 方法

    因此 我的任务是为注册表路由编写一个简单的 Web 应用程序 使用 Spring MVC 所以我有 路线 类 我想在其中保留起点 终点和中间点列表 但我不明白如何将值从 jsp 放入列表 例如使用 jstl 所以我决定解析一个字符串 pub
  • 如何制作.Net或JVM语言?

    我看到了 NET 和 JVM 的所有这些新语言 一个人如何开始制作一个 我找不到关于 JVM 或 MSIL 规范的任何好的文档 Edit 我已经知道如何解析 我更感兴趣的是如何有这么多人基于这些平台创建新语言 你有点幸运 为 NET 开发的
  • java.lang.IllegalArgumentException:在 MongoDB 中执行聚合的引用无效

    我收集了一份文件 id ObjectId 5ab273ed31fa764560a912f8 hourNumber 21 errorSegments agentName agentX agentName agentY 我正在尝试在 Sprin
  • 汉字编码?

    我有一个用例 我通过发布请求向 spring 控制器提交参数 在控制器中 我正在读取参数并执行一些操作 之后 我将这些参数作为请求参数的一部分发送到其他 URL 在这里我无法处理中文字符 它变得乱码 我现在正在做的行动 1 我将下面的中文文
  • 带有 @Scheduled Spring 注释的方法的切入点

    我想要一个带有注释的方法的 AspectJ 切入点 Scheduled 尝试了不同的方法但没有任何效果 1 Pointcut execution org springframework scheduling annotation Sched
  • 更改 Spring Web 应用程序的默认会话超时

    我必须测试一个由 spring 和 jsp 编写的 Web 应用程序 应用程序的默认会话超时为 30 分钟 我想减少会话超时 为此 我改变了web xml文件输入tomcatInstallationLocation conf 但这不起作用
  • 如何在 Spring Integration 流程中访问 Flux?

    我尝试访问 Spring Integration 中的 Flux 对象 而不将流声明拆分为两个函数 我想知道如何执行以下操作 Bean public IntegrationFlow mainFlow return IntegrationFl
  • 如何排除某些类不包含在代码覆盖率中? (爪哇)

    通过将其添加到我的 POM 文件的标签中 我已经可以排除带有声纳立方体报告的类
  • Spring Data Jpa OneToMany 同时保存子实体和父实体?

    这是我的父实体 注意 为了简洁起见 删除了 getter setter lombok 注释 Entity public class Board Id GeneratedValue strategy GenerationType IDENTI
  • Kotlin 支持 Java 11 吗?

    我尝试使用 Kotlin V1 2 70 Gradle V4 10 1 和 Java 11 使用 gradle 编译项目时 出现错误 未知 JVM 目标版本 11 支持的版本 1 6 1 8 Kotlin 编译器是否支持 Java 11 生
  • JpaRepository 上的@Transactional

    我正在使用只读数据库将一些数据输入到我的项目中 我们使用带有 jpa 和 hibernate 的 Spring v3 以下注释是否会使对我的存储库的所有调用成为只读事务 或者我是否需要调用存储库的服务层上的注释 package com bl
  • Spring - 如何在不匹配列名的情况下使用 BeanPropertyRowMapper

    我正在开发一个应用程序 该应用程序已使用行映射器从纯 JDBC 转换为 Spring 模板 我遇到的问题是数据库中的列与属性名称不匹配 这阻止我使用BeanPropertyRowMapper容易地 我看到一些关于在查询中使用别名的帖子 这会
  • Dart/Flutter 如何编译到 Android?

    我找不到任何具体的资源 Dart 是否被编译到 JVM 或者 Google 的团队是否编译了 Dart VM 以在 JVM 上运行 然后在 JVM 内的 Dart VM 中运行 Dart 前者更有意义 并且符合 无桥 的口号 但后者似乎更符

随机推荐

  • linux脚本解释,shell 脚本中的注释详解

    上次写了shell脚本的注释 没想到那么多人的需要 也存在不少不足 这次做个补充吧 单行注释 单行注释就比较简单了 直接在行最前端加上符号 即可 具体用法如下所示 this is comment test echo this is comm
  • Sass运算

    1 加法 加法运算是 Sass 中运算中的一种 在变量或属性中都可以做加法运算 如 box width 20px 8in 编译出来的 CSS box width 788px 但对于携带不同类型的单位时 在 Sass 中计算会报错 如下例所示
  • module 'tensorflow' has no attribute 'random_normal'

    报错 module tensorflow has no attribute random normal 说明tensorflow中没有random normal这个方法 最新一版的random normal方法已经换为 random nor
  • Python编程语言概述

    Python编程语言概述 Python是一种高级编程语言 以其简洁 易读和可扩展性而闻名 它具有广泛的应用领域 包括Web开发 科学计算 人工智能和数据分析等 本文将介绍Python的基本特性 语法结构和一些常用的编程范例 Python的基
  • makefile后缀规则

    linux下采用c 编写程序后编译成可执行文件时 敲打的命令太多 尤其是对于同时编译很多文件时尤其不便 采用后缀规则可以节省很多功夫 下面是一个简略的makefile文件 只需敲入make 源码文件名 out即可完成编译 继续学习中 CPP
  • 冒泡排序_C++

    include
  • Hadoop之CDH安装

    1 离线数据存储及查询环境部署 离线数据的存储与查询主要是以hadoop为中心的技术栈 包括hive hbase hue kylin等 部署hadoop的方式比较流行的主要有三种 1 直接部署Apache Hadoop 即手工部署 需要自己
  • 常见的阵列技术——raid0,1,5

    常见的阵列技术 Raid0 没有容错设计的条带磁盘阵列 数据条带 并行读写 最大数据容量 成本低 速度快 一块的磁盘坏了 数据全部丢失 没有冗余 低可靠性 Raid1 相互镜像 冗余最大 快速恢复 成本高 高可靠性 最多允许一半的磁盘坏 数
  • DB扩展名的数据库文件怎么打开:两种db数据库的打开方式

    两种db数据库的打开方式 现在桌面级的各种管理系统使用的数据库都是比较常见的类型 比如Access数据库 扩展名为mdb xBase类数据库 扩展名为dbf 但有两种扩展名同为db的数据库 分属两个公司的产品 一个是老牌桌面数据库Parad
  • ssd recommended_怎么看SSD还能用多久 固态硬盘寿命检测方法【详解】

    关于固态硬盘和机械硬盘的对比 理论上来说呢 固态硬盘的寿命是不如机械硬盘的 不过实际运用情况下 SSD由于抗震能力强 实际用起来寿命可能比机械硬盘还长 毕竟很多机械硬盘都是高速旋转过程中 受到碰撞导致磁头破坏 硬盘也就坏了 下面分享几种固态
  • [CISCN2021 Quals]upload

    知识点 unicode字符替代 二次渲染绕过 目录结构识别 upload php 中限制了图片的大小 长宽 以及一些字母
  • 机器学习基础(一):平均数中位数众数

    机器学习基础 一 平均数中位数众数 从一组数字中我们可以学到什么 在机器学习 和数学 中 通常存在三中我们感兴趣的值 均值 Mean 平均值 中值 Median 中点值 又称中位数 众数 Mode 最常见的值 例如 我们已经登记了 13 辆
  • 【现代谜题】晚上有四个人要过桥,只有一个手电筒,每次过桥都需要手电筒,每次最多可同时过两个人,其中甲过桥要1分钟,乙要2分钟,丙要5分钟,丁要10分钟。求最短的过桥时间。

    文章目录 题目 一 思路 方法一 方法二 二 代码 测试数据 题目 晚上有四个人要过桥 只有一个手电筒 每次过桥都需要手电筒 每次最多可同时过两个人 其中甲过桥要1分钟 乙要2分钟 丙要5分钟 丁要10分钟 求最短的过桥时间 一 思路 首先
  • R语言基本数据结构

    R语言系列文章目录 文章目录 R语言系列文章目录 前言 一 向量 二 矩阵 三 数组 四 列表 五 数据框 前言 一篇技术博客的写作不可能面面俱到 那这就意味着必须抛弃一些内容 在R语言的书里对于R的基础知识的讲解很容易找到 因此 这一R语
  • qt文件操作

    第一步 手动获取文件路径 include
  • 动态代理简单实现

    动态代理简单实现 文章目录 动态代理简单实现 一 反射 二 反射机制提供的功能 1 相关API 2 Class类的理解 4 创建类的对象的方式 5 Class实例可以是那些结构的说明 三 类的加载过程 四 动态代理 反射的动态性 一 反射的
  • LeetCode:设计循环队列

    题目链接 622 设计循环队列 力扣 Leetcode https leetcode cn problems design circular queue 还是老套路二话不说 先上代码 typedef struct int front int
  • win11下经典jdk8的安装与环境变量的配置(一看就懂,超级详细!!!)

    1 安装jdk8 由于Oracle官网需要注册账号才能下载 不想注册的同学们可以直接通过下面的地址下载 因为新的jdk版本变化不是很大 所以初学者用1 8版本就足够啦 链接 https pan baidu com s 1HjoXGTlaPw
  • 函数栈帧的创建和销毁

    全文目录 前言 寄存器 main函数的调用 调用main函数的函数 main函数的栈帧如何开辟的 push 保存调用方的 ebp move 维护新开栈帧的栈底 sub 维护新开栈帧的栈顶 三连 push 添加栈帧的信息的变量 lea 存放栈
  • spring中的quartz调度问题

    1 SchedulerFactoryBean会自动启动 当在spring文件中定义了多个SchedulerFactoryBean实例时 一定要小心 因为这些ScheduleFactoryBean自从load进程序里 就会自动启动 如果要手动