前几日调试一个有些年纪的发送短信的war包,采用的是quartz定时扫表短信表然后发送短信到短信网关,起初启动的时候严格按照指定的间隔时间轮询,一段时间后,则很长时间才执行一次,本来是1分钟一次,一天后就变成30分钟甚至更长时间一次,仔细观察日志发现一次短信发送被调用还没结束的时候系统又执行了下一次发送短信的功能,如此堆积造成很多进程并发发送短信,没有求证是否是进程太多导致线程阻塞,导致quartz未按指定间隔时间去执行,试着加上
引用
<property name="concurrent" value="false" />
修改后的配置如下
引用
<bean id="smgpPhsReceive"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="phsReceive" />
<property name="targetMethod" value="run" />
<property name="concurrent" value="false" />
</bean>
重新发布到WebSphere后重启应用后,观察一天问题解决。
分析:<property name="concurrent" value="false" /> 会让定时器等待上一次执行完后再执行下一次,quartz称为有状态定时器,可能会加重系统开销,但该适用的场合还是要使用。
分享到:
相关推荐
Quartz.net作业调度自定义定时执行任务多任务执行c#,定时执行任务,如超时取消订单,自动确认收货等等
java + quartz 实现定时任务的简单任务,下载即可运行
spring注解Quartz定时执行功能
C# Quartz.Net定时任务操作明细、完整过程 每种场景均有涉及,代码Copy稍作修改就可使用
NULL 博文链接:https://medbricom.iteye.com/blog/1782765
spring几种定时执行任务方法 TimeTask Quartz
我们要实现定时执行某个方法时,就可以在job目录中加入自己的方法类,但要实现GCJobInterface接口,重写execute 方法即可
NULL 博文链接:https://chaoyi.iteye.com/blog/2170208
spring定时器代码。解决多次执行问题。包含quartz-all.jar包。 说明很详细。希望能帮上哪位朋友。
java定时执行多任务和quartz定时执行多任务
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
tomcat启动时立即调用quartz执行一次
Spring + quartz 定时任务修改定时时间不重启服务
定时任务quartz实现分组串行并行动态配置
quartz 动态定时任务 根据数据库数据配置动态定时任务
Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1...将要定时执行的任务的代码写到实现IJob接口的Execute方法中即可,时间到来的时候Execute方法会被调用。
使用Quartz调度任务,根据需要人为的终止某个任务,适用于很多常见的场景
使用Spring Quartz执行定时任务
quartz定时任务 包括定时邮件,本地执行文件等。
NULL 博文链接:https://lostangel0214.iteye.com/blog/1163503