quartz连接数

quartz连接数,第1张

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表说明

设置代码:0 0 0 MON

cron的表达式被用来配置CronTrigger实例。 cron的表达式是字符串,实际上是由七子表达式,描述个别细节的时间表。这些子表达式是分开的空白,代表:

1、Seconds

2、Minutes

3、Hours

4、Day-of-Month

5、Month

6、 Day-of-Week

7、Year (可选字段)

例  "0 0 12 WED" 在每星期三下午12:00 执行,

个别子表达式可以包含范围, 例如,在前面的例子里("WED")可以替换成 "MON-FRI", "MON, WED, FRI"甚至"MON-WED,SAT"

扩展资料:

每一个字段都有一套可以指定有效值,如

Seconds (秒) :可以用数字0-59 表示

Minutes(分):可以用数字0-59 表示

Hours(时) :可以用数字0-23表示

Day-of-Month(天) :可以用数字1-31 中的任一一个值,但要注意一些特别的月份

Month(月):可以用0-11 或用字符串  “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示

Day-of-Week(每周):可以用数字1-7表示(1 = 星期日)或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”表示

“/”:为特别单位,表示为“每”如“0/15”表示每隔15分钟执行一次,“0”表示为从“0”分开始, “3/20”表示表示每隔20分钟执行一次,“3”表示从第3分钟开始执行

“”:表示每月的某一天,或第周的某一天

“L”:用于每月,或每周,表示为每月的最后一天,或每个月的最后星期几如“6L”表示“每月的最后一个星期五”

“W”:表示为最近工作日,如“15W”放在每月(day-of-month)字段上表示为“到本月15日最近的工作日”

““#”:是用来指定“的”每月第n个工作日,例 在每周(day-of-week)这个字段中内容为"6#3" or "FRI#3" 则表示“每月第三个星期五”

quartz定时任务配置:

class="orgschelingquartz"

其中:

配置对应的定时任务,可配置多个,名称要唯一,对应的是第二步中配置的

配置,由于要实现动态读取定时任务周期时间,所以我们要写一个类实现,类的内容如下:

publicclassextendsimplements{

privatestaticfinallong=1L;

privatesysParamServiceImpl;

privateStringkey;

publicvoidsetKey(Stringkey)

{

thiskey=key;

}

publicvoidsetSysParamServiceImpl(SysParamServiceImplsysParamServiceImpl)

{

thissysParamServiceImpl=sysParamServiceImpl;

setCronExpression(getCronExpressionFromDB());

}

privateStringgetCronExpressionFromDB()

{

if(StringUtilsisEmpty(key))

return"000/1";

SysParamsysParam=newSysParam();

try

{

sysParam=sysParamServiceImplgetNameByKey(key);

}

catch(Exceptione)

{

eprintStackTrace();

}

if(sysParam!=null&&!StringUtilsisEmpty(sysParamgetParamValue()))

returnsysParamgetParamValue();

return"000/1";

}

}

简单说明一下:key是用来查询数据库配置的CronExpression表达式的查询条件,SysParamServiceImpl是实现查询的类,这几个参数都要从spring配置的CronTriggerFactoryBean参数获取,注意,配置的时候,key值的配置要在SysParamServiceImpl的配置之前,否则报空指针

spring配置CronTriggerFactoryBean:

实现了CronTriggerFactoryBean之后,开始配置CronTriggerFactoryBean,现在配置的是InitCronTriggerFactoryBean:

id对应quartz定时任务配置的,参数有三个,第二个和第三个是InitCronTriggerFactoryBean设置内容需要的,第一个则是定时任务执行业务逻辑的类

ps:,这个要配置对应的bean,我的是

配置对应的定时任务执行业务方法的类:

class="orgspringframeworkschelingquartzJobDetailFactoryBean"

简单说明一下:配置的是你需要定时执行的类,下面配置的是定时执行类中需要用到的其他类,这是由于项目启动执行定时任务不能在定时任务类中实例化这些类,要配置才行。

对应的定时任务执行类:

publicclassInquiryQuartzextendsQuartzJobBean{

@Autowired

privateInquiryServiceImplinquiryServiceImpl;

@Override

protectedvoidexecuteInternal(JobExecutionContextarg0)throwsJobExecutionException

{

//实例化接口

inquiryServiceImpl=(InquiryServiceImpl)arg0getJobDetail()getJobDataMap()get("inquiryServiceImpl");

//执行业务方法

quartzStart();

}

publicvoidquartzStart(){

//业务方法

}

}

说明一下:必须要实现QuartzJobBean接口

至此,就可以完成可配置CronExpression表达式的定时任务了!1


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

原文地址: https://outofmemory.cn/yw/13334675.html

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

发表评论

登录后才能评论

评论列表(0条)

保存