-
如何做一个时间可控制的定时任务0
有一个需求 一个页面配置时间,后台根据页面配置的时间定时运行任务。比如说在页面上配置15分钟。在后台就要每15分钟运行这个方法。这样如何实现呢?spring quartz的好像都是写死的时间。求一个完整的例子或者是思路 谢谢!!
问题补充:有人吗?2013年8月27日 20:12
3个答案 按时间排序 按投票排序
-
spring quartz 是可以实现的
package com.cnpc.framework.util.quartz; import java.util.Date; import java.util.List; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleTrigger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import com.cnpc.classify.scan.dao.ScanTaskDao; import com.cnpc.classify.scan.model.ScanTask; import common.Logger; public class TimerJob implements ApplicationContextAware { //获得工厂 Logger log=(Logger) LoggerFactory.getLogger(TimerJob.class); private Scheduler scheduler; public void setScheduler(Scheduler scheduler) { this.scheduler = scheduler; } //删除任务 public void revokeTask(Integer id){ try { //移除触发器 SimpleTrigger simpleTrigger = (SimpleTrigger)scheduler.getTrigger("my_" + id, Scheduler.DEFAULT_GROUP); if(null != simpleTrigger){ scheduler.unscheduleJob(simpleTrigger.getName(), Scheduler.DEFAULT_GROUP); } } catch (SchedulerException e) { e.printStackTrace(); } } //下达任务 public boolean insertTrigger(Integer scanTask,Date d) { Integer id=scanTask; Date dtime = d; log.info("ID:"+id); long repeatInterval =0L; //long repeatInterval =scanTask.getTimeSpace().getTime(); //测试 时使用的间隔时间 //验证是否有任务 try { SimpleTrigger checkSimpleTrigger = (SimpleTrigger)scheduler.getTrigger("my_" + id, Scheduler.DEFAULT_GROUP); if(null != checkSimpleTrigger){ return false; } } catch (SchedulerException e1) { e1.printStackTrace(); } if(null!=dtime){ try { //动态及动态产生一个人任务 跟一个触发器 交由Scheduler工厂管理 //1.新建一个任务 2.分配入默认的组 3.执行工作的BEAN 需实现JOB 接口 并实现execute方法 JobDetail jobDetail = new JobDetail("reportJob_" + id, Scheduler.DEFAULT_GROUP,MyJob.class); //执行0次,每0L秒执行一次 null为结束时间 dtime为开始时间更多详情请官网 查询 或者GOOGLE //复杂的定时任务 SimpleTrigger trigger = new SimpleTrigger("trigger_" + id,Scheduler.DEFAULT_GROUP,dtime,null,0,0L); scheduler.getContext().put("applicationContext",applicationContext); //启动新增定时器任务 scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); return true; } catch (Exception e) { revokeTask(id); e.printStackTrace(); } } return false; } //初始化数据库任务 public void initJobTrigger(){ } private ApplicationContext applicationContext=null; @Override public void setApplicationContext(ApplicationContext arg0) throws BeansException { this.applicationContext=arg0; } }
<bean id="scanPushTask" class="com.cnpc.framework.util.quartz.ScanPushTask"> <property name="scheduler" ref="schedulerFactory" /> <property name="scanTaskDao" ref="scanTaskDao" /> </bean> <!-- test impl --> <bean id="soatest" class="com.cnpc.framework.util.quartz.SOAManagerImpl"> </bean> <bean autowire="no" id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="initTrigger" /> <!--<ref local="initTriggerTimer" />--> <ref local="cronTriggerClassifyInfoClear" /> <ref local="cronTriggerAddPartition" /> <ref local="cronTriggerclassifyWebManagerJob" /> </list> </property> <property name="taskExecutor" ref="executor" /> </bean> <!-- 配置定时任务,用于初始化定时器 --> <bean id="executionJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="scanPushTask" /> </property> <property name="targetMethod"> <value>initJobTrigger</value> </property> <property name="concurrent" value="true" /> </bean> <bean id="initTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="executionJobDetail" /> </property> <property name="cronExpression"> <value>* * * * * ?</value> </property> <!-- 以毫秒为单位,启动后一分钟触发 --> <property name="startDelay"> <value>60000</value> </property> </bean> <!-- 线程池配置 --> <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10" /> <property name="maxPoolSize" value="100" /> <property name="queueCapacity" value="500" /> </bean>
2013年8月28日 13:39
-
有用程序添加的定时器
http://blog.csdn.net/longg_yang/article/details/5836188
简单适用2013年8月27日 23:11
-
quartz应该还有另外一种任务,不是配置在配置文件中,而是把任务插入到quartz定义的表中,里面有关于时间,是否只运行一次等参数的配置
2013年8月27日 22:15
相关推荐
在IT行业中,页面控制定时任务是一种常见的需求,它主要用于实现网页上的某些功能自动化执行或定期更新。例如,可能需要在用户界面中定时刷新数据、自动发送通知或者在特定时间执行某些计算任务。这个主题主要涉及两...
在IT行业中,定时任务是许多应用的核心组成部分,用于在特定时间执行特定的业务逻辑。Spring框架结合Quartz库,提供了一种强大而灵活的方式来管理这些定时任务。本项目旨在演示如何利用Spring和Quartz从数据库中动态...
`HomeController.cs` 可能包含了一个控制器,用于展示或者管理定时任务。通过HTTP请求,用户可以触发任务的动态添加、删除或修改。在控制器中,我们可以调用Furion提供的API,如`BackgroundJob.Enqueue`来添加一次性...
Spring Boot提供了Spring Scheduler抽象来实现这样的需求,使得开发者能够方便地管理和控制定时任务。本篇文章将深入探讨如何在Spring Boot中实现定时任务的动态开启和关闭。 首先,我们需要引入Spring Boot的`...
【定时任务测试样例】是基于SpringBoot框架和Quartz库设计的一个测试工具,主要用于模拟和验证定时任务的管理功能。在IT行业中,定时任务是系统自动化的重要组成部分,它们允许程序按照预设的时间间隔执行特定操作,...
在企业信息化管理中,定时任务是不可或缺的一部分,它能够自动化执行一些定期的任务,比如数据备份、报表生成、系统维护等,从而提高工作效率,减少人工干预。K3Cloud作为一款先进的企业资源计划系统,其定时任务...
在Java开发中,定时任务是不可或缺的一部分,尤其在企业级应用中,用于执行定期的数据处理、报表生成、系统维护等工作。Spring框架与Quartz库的整合提供了强大的动态管理定时任务的能力。下面我们将深入探讨这个主题...
SSH+quartz实现的可动态配置时间规则的定时任务是一个在IT行业中常见的需求,尤其是在企业级应用和服务中,为了实现自动化运维、数据处理或者业务触发等目的。SSH指的是Spring、Struts和Hibernate这三个Java开发框架...
首先,Furion的定时任务是基于Hangfire库进行封装的,Hangfire是一个成熟的异步后台任务处理框架,它可以将复杂的后台任务转化为简单的API调用。Furion通过简化其API和集成到自身框架中,使得开发者无需深入了解...
综上所述,这个项目提供了一种使用C#和Quartz.NET创建可远程控制的定时任务解决方案。它不仅能够根据需求动态加载新的DLL扩展任务,还能够作为Windows服务稳定运行,满足了企业级应用对定时任务的高要求。对于想要...
3. **API调用**:通过`cornsdk.ec`提供的API,你可以方便地控制定时任务的启动、暂停、恢复和停止。理解这些API的工作原理和使用方法是至关重要的。 4. **配置文件解析**:`.dll.json`配置文件的解析是读取和应用...
在我们的场景中,可以创建一个行为类来处理定时任务。 下面是一个简单的步骤来实现基于ThinkPHP5的定时任务: 1. **创建行为类**:在`app\behavior`目录下创建一个新的PHP文件,例如`ScheduledTaskBehavior.php`,...
总之,易语言 Crontab 定时任务执行模块 v1.2 是一个强大的工具,能够帮助开发者在易语言环境下实现复杂的定时任务和计时功能,通过熟悉并熟练使用这个模块,可以提升你的程序自动化水平,提高效率。
总结起来,Spring定时任务结合多线程可以有效地提高系统的并发能力,使得在预设的时间间隔内,多个任务能并行执行,从而提高整体的处理效率。在实际开发中,根据业务需求调整定时任务的触发频率和线程池的配置,可以...
Java Quartz 是一个强大的开源任务调度库,用于在Java应用程序中创建和管理定时任务。Quartz 提供了丰富的API,使得开发者能够灵活地定义任务,并精确控制任务的执行时间。本项目利用Quartz 实现了基于Cron表达式的...
在IT行业中,定时任务是系统自动化的一个重要组成部分,它允许我们按照预设的时间间隔执行特定的任务,无需人工干预。在Web开发中,ThinkPHP框架是一个非常流行的PHP开发框架,而ThinkPHP3.2.3是其3.x版本的一个稳定...
在本项目中,我们将深入探讨如何使用Quartz来管理定时任务,包括任务的新增、暂停、删除和更新,以及处理时间可变的情况。 1. **Quartz基本概念** - **Job**: Job是执行的任务实体,包含具体的业务逻辑。 - **...
在这个场景下,我们讨论的是如何在ASP.NET环境中设置一个定时器,使得页面加载或IIS启动后,该定时任务每隔10秒执行一次。 1. **定时任务原理**: ASP.NET定时任务通常基于`System.Threading.Timer`类或者`System....
Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...
首先,Java的`java.util.Timer`是一个基础的定时任务工具,它可以按照设定的频率执行任务,但无法在特定时间点触发。由于其功能相对简单,且在某些场景下不够灵活,因此在实际项目中使用较少。 接着,Quartz是一个...