quartz+hibernate+spring 频繁 *** 作数据库,出现 数据库连接超过最大连接数

quartz+hibernate+spring 频繁 *** 作数据库,出现 数据库连接超过最大连接数,第1张

spring

quartz如何动态配置时间

1

目的:动态设置时间,触发相应的任务

2

系统架构为

struts

+

spring

+

hibernate

3

实现步骤:

在页面上设置时间;

将时间转换为unix

cron

expression;

将转换后的时间规则表达式记录到数据库中(也可以写

Quartz集群中的每个节点是一个独立的Quartz应用,它又管理其它的节点。

需要分别对每个节点分别启动或停止。不像应用服务器的集群,独立的Quartz节点并不与另一个节点或是管理节点通信。

Quartz应用是通过数据库表来感知到另一应用。

Quartz应用定时15秒同步一次心跳到数据库。

Quartz通过数据库行锁来解决分布式环境下数据一致性问题。

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。本文主要介绍 Quartz 的基本使用,文中使用到的软件及版本:Java 180_191、Quartz 232、SpringBoot 244、MySQL 57。

1、Quartz 核心概念

Job 表示一个工作,要执行的具体内容。

JobDetail 表示一个具体的可执行的调度程序,Job 是这个可执行程调度程序所要执行的内容,另外 JobDetail 还包含了这个任务调度的方案和策略。一个 JobDetail 可对应多个 Trigger。

Trigger 代表一个调度参数的配置,什么时候去调。一个 Trigger 对应 一个 JobDetail。

Scheduler 代表一个调度容器,一个调度容器中可以注册多个 JobDetail 和 Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调度了。

2、Quartz 常用配置

21、Quartz 主配置

1、orgquartzschedulerinstanceName scheduler 实例名称,默认值为 'QuartzScheduler'

2、orgquartzschedulerinstanceId scheduler实例Id,必须唯一;启用集群可设为 'AUTO',默认值为 'NON_CLUSTERED'

3、orgquartzschedulerthreadName 线程名称,默认值为 instanceName + '_QuartzSchedulerThread'

4、orgquartzschedulermakeSchedulerThreadDaemon 调度程序的主线程是否设为守护线程,默认值为 false

22、ThreadPool 配置

1、orgquartzthreadPoolclass ThreadPool实现的类名,默认值为 'orgquartzsimplSimpleThreadPool'

2、orgquartzthreadPoolthreadCount 线程数,默认值为 10

3、orgquartzthreadPoolthreadPriority 线程优先级,默认值 5

23、JobStore 配置

orgquartzjobStoreclass 任务存储实现类名,可设为 orgquartzsimplRAMJobStore、orgquartzimpljdbcjobstoreJobStoreTX(quartz管理事务)、orgquartzimpljdbcjobstoreJobStoreCMT(应用程序管理事务)、orgterracottaquartzTerracottaJobStore;当设置为jdbc存储时,有以下属性可以调整设置:

1、orgquartzjobStoredriverDelegateClass 驱动代理类,看设置为标准的 jdbc 驱动程序:orgquartzimpljdbcjobstoreStdJDBCDelegate

2、orgquartzjobStoredataSource 数据源名称

3、orgquartzjobStoretablePrefix JDBCJobStore的表前缀;如果使用不同的表前缀,则可以在同一数据库中拥有多组Quartz表;默认值 'QRTZ_'

4、orgquartzjobStoreuseProperties 指示JobDataMaps中的所有值都将是字符串,避免了将非String类序列化为BLOB时可能产生的类版本控制问题

5、orgquartzjobStoreisClustered 是否开启集群,如果有多个 Quartz 实例使用同一组数据库表,则此属性必须设置为 true,默认值为 false

6、orgquartzjobStoreclusterCheckinInterval 设置此实例检入与群集的其他实例的频率(以毫秒为单位),默认值为 15000

24、DataSource 配置

1、orgquartzdataSourceNAMEdriver JDBC 驱动程序

2、orgquartzdataSourceNAMEURL JDBC URL

3、orgquartzdataSourceNAMEuser 数据库用户名

4、orgquartzdataSourceNAMEpassword 数据库密码

5、orgquartzdataSourceNAMEmaxConnections 最大连接数,默认值 10

6、orgquartzdataSourceNAMEvalidationQuery 验证sql

7、orgquartzdataSourceNAMEidleConnectionValidationSeconds 空闲连接检测间隔,默认值 50

8、orgquartzdataSourceNAMEvalidateOnCheckout 获取连接后是否验证连接,默认值 false

9、orgquartzdataSourceNAMEdiscardIdleConnectionsSeconds 空闲连接多长时间后丢弃该连接,0 表示禁用该功能,默认值为 0。

或者使用容器提供的数据源:

1、orgquartzdataSourceNAMEjndiURL 数据源的 jndi

2、orgquartzdataSourceNAMEjavanamingsecurityprincipal  jndi 需要的用户名

3、orgquartzdataSourceNAMEjavanamingsecuritycredentials jndi 需要的密码

3、Quartz JDBCJobStore表说明

quartz可以不适用数据库吗

QUARTZ任务不写入数据库

在使用quartz遇到了很诡异的bug,通过google及百度都没有找到解决方案,最后通过搭建quartz源码环境,发现问题所在。

最近接手一个系统的升级开发,系统中使用了quartz任务调度,在大部分的需求开发完毕后,对之前开发的部分功能模块进行测试及优化,当优化任务调度并进行测试,问题出现了,每当我添加定时任务时,任务添加成功且在到达定时时间后,任务会被执行,但是任务切没有写入数据库!!!

以上就是关于quartz+hibernate+spring 频繁 *** 作数据库,出现 数据库连接超过最大连接数全部的内容,包括:quartz+hibernate+spring 频繁 *** 作数据库,出现 数据库连接超过最大连接数、quartz为什么不在同一个节点上执行、quartz连接数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9762194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存