使用sql server的时候一切都是正常的,但是更换成oracle数据库就报告异常:
ERROR -- ClusterManager: Error managing cluster: Failure updating scheduler state when checking-in: ORA-00904: "RECOVERER": 标识符无效
org.quartz.JobPersistenceException: Failure updating scheduler state when checking-in: ORA-00904: "RECOVERER": 标识符无效
[See nested exception: java.sql.SQLException: ORA-00904: "RECOVERER": 标识符无效
at org.quartz.impl.jdbcjobstore.JobStoreSupport.clusterCheckIn(JobStoreSupport.java:2130)
at org.quartz.impl.jdbcjobstore.JobStoreCMT.doCheckin(JobStoreCMT.java:1387)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.manage(JobStoreSupport.java:2378)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$ClusterManager.initialize(JobStoreSupport.java:2365)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:506)
at org.quartz.core.QuartzScheduler.start(QuartzSched
使用sql server的时候一切都是正常的,但是更换成oracle数据库就报告异常:ERROR -- ClusterManager: Error managing cluster: Failure updating scheduler state when checking-in: ORA-00904: "RECOVERER": 标识符无效org.quartz.JobPersiste...
问题:集成seata后无法支持
spring
quartz
框架的复合主键。
org.
quartz
.JobPersistenceException: Failure updating scheduler state when checking-in: Multi PK
Caused by: io.seata.common.exception.NotSupportYetException: Multi PK
Java执行一个SQL查询未提交,遇到1205错误。
java.lang.Exception:
### Error updating database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
解决办法:
Release Notes -
Quartz
Scheduler (Historical - Do Not File New Issues Here - See GitHub) - Version 2.0
Documentation
[QTZ-76] - Document: Batch-acquiring of triggers
[QTZ-77] - ...
quartz
集群部署 s still active but was recovered by another instance in the cluster问题源码分析解决
问题如下在集群启动的时候包如下错误
2021-03-21 14:49:22.984 WARN 12516 — [_ClusterManager] o.s.s.
quartz
.LocalDataSourceJobStore [3334] : This scheduler instance (scsp-1.novalocal1616
问题描述:这是关于
Quartz
服务部署的集群问题。先说结论,如果只有这一个报错可以不予理会,这是由于在
Quartz
集群部署引起的,原因是在集群环境中,对于同一个集群实例,只允许一个可用服务器来执行定时任务。
PS:如果想要彻底解决,方便本地调试,可以设置org.
quartz
.jobStore.isClustered=false。
实际过程:在单体服务中,引入了
Quartz
定时任务框架,且
使用
的是集群模式,当部署了公司的DEV环境以后,由于开发需要,还需要在本地启动服务,这就导致隔一段时间,log就会.
Quartz
是一种广泛
使用
的开源调度器,可用于安排和执行重复的任务。它可以
持久
化
到数据库中以保证调度任务的
持久
化
和可靠性。
要将
Quartz
持久
化
到数据库中,需要配置
Quartz
的数据存储设置。具体步骤如下:
1. 首先,需要在项目中添加
Quartz
的相关依赖库。
2. 然后,在
Quartz
的配置文件中指定要
使用
的数据存储方式。这可以通过设置以下属性来完成:
org.
quartz
.jobStore.class = org.
quartz
.impl.jdbcjobstore.JobStoreTX
org.
quartz
.jobStore.driverDelegateClass = org.
quartz
.impl.jdbcjobstore.StdJDBCDelegate
org.
quartz
.jobStore.dataSource = myDS
org.
quartz
.jobStore.tablePrefix = QRTZ_
这些属性指定了
使用
JDBC JobStore来管理
Quartz
作业,以及
使用
指定的数据源和表前缀。
3. 接下来,需要在项目中配置数据源。这可以通过在项目的配置文件中添加以下内容来完成:
<bean id="myDS" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/
quartz
"/>
<property name="username" value="root"/>
<property name="password" value=""/>
<property name="maxActive" value="100"/>
<property name="maxIdle" value="30"/>
</bean>
这将创建一个基本的数据源,以连接到MySQL数据库,并指定要
使用
的用户名和密码。
4. 最后,需要在
Quartz
的配置文件中设置以下属性,以启用
持久
化
:
org.
quartz
.jobStore.isClustered = false
org.
quartz
.jobStore.useProperties = false
org.
quartz
.jobStore.misfireThreshold = 60000
org.
quartz
.jobStore.driverDelegateClass = org.
quartz
.impl.jdbcjobstore.StdJDBCDelegate
这些属性将启用
持久
化
,并指定
Quartz
的一些行为,例如任务执行延迟和驱动程序代理类。
完成上述步骤后,
Quartz
就会将作业和触发器存储在指定的数据库中,以便在应用程序重新启动时继续执行。