`
sd_zyl
  • 浏览: 44725 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

quartz动态更新运行时间

阅读更多
    @Resource
    private Scheduler startQuertz;//这个需要注入过来
    
    /**
     * 更新定时任务的运行时间
     * @param triggerKey 定时任务在spring里配置bean的id
     * @param cronExpression 定时器的cron表达式
     * @param executeNow 默认值为0,不要立即执行定时任务一次; 非0值表示立即执行一次
     * @return
     */
    public boolean updateCronExpression(String triggerKey, String cronExpression, Integer executeNow) {
    	if(StringUtils.isBlank(triggerKey) || StringUtils.isBlank(cronExpression)) {
    		log.error("参数错误");
    		return false;
    	}
    	if(executeNow == null) {
    		executeNow = 0;
    	}
    	triggerKey = triggerKey.trim();
    	cronExpression = cronExpression.trim();
    	
		TriggerKey key = new TriggerKey(triggerKey);//动态条件
		
		try {
			Trigger oldTrigger = startQuertz.getTrigger(key);
			
			if(oldTrigger instanceof CronTriggerImpl) {
    			CronTriggerImpl trigger = (CronTriggerImpl)oldTrigger;
    			trigger.setCronExpression(cronExpression);//动态传入的条件
    			//不立即执行
    			if(executeNow.intValue() == 0) {
    				trigger.setStartTime(new Date());//防止立即生效
    			}
    			startQuertz.rescheduleJob(trigger.getKey(), trigger);   				
			}

		} catch (Exception e) {
			log.error("更新cron定时任务运行时间失败[triggerKey=" + triggerKey + "]:", e);
			return false;
		}
    	return true;
    }


xml配置:
<bean id="demoTrigger"
      class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail">
        <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="jobObj"/>
            <property name="targetMethod" value="jobObj的方法名"/>
        </bean>
    </property>
    <property name="cronExpression" value="0 0 3 * * ?"/>
</bean>
<!-- 配置线程池 -->
<bean id="taskExecutor"
      class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <!-- 线程池维护线程的最少数量 -->
    <property name="corePoolSize" value="5"/>
    <!-- 线程池维护线程所允许的空闲时间 -->
    <property name="keepAliveSeconds" value="30000"/>
    <!-- 线程池维护线程的最大数量 -->
    <property name="maxPoolSize" value="1000"/>
    <!-- 线程池所使用的缓冲队列 -->
    <property name="queueCapacity" value="200"/>
</bean>
<!--如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="true" autowire="no" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="taskExecutor" ref="taskExecutor"/>
    <property name="triggers">
        <list>
            <ref bean="demoTrigger"/>
        </list>
    </property>
</bean>
分享到:
评论

相关推荐

    spring+springMVC+mybatis+quartz动态定时任务创建

    例如,可以使用Spring的ApplicationContext来初始化Quartz的Scheduler,然后在运行时通过Spring的Bean工厂动态创建和管理Job。Quartz的JobDetail和Trigger可以被配置为动态加载,这样就能根据业务逻辑或外部输入来...

    Quartz动态修改时间,java实现修改CronExpression方法

    本项目主要探讨如何在运行时动态修改Quartz定时任务的CronExpression,即cron表达式,来改变任务的执行时间。 首先,CronExpression是Quartz中用于定义时间触发规则的关键组件,它基于Unix的crontab语法,可以精确...

    spring+quartz动态设置定时时间

    - 使用数据库存储:Quartz支持将Job和Trigger的信息存储在数据库中,通过更新数据库中的Trigger信息,可以实现动态调整定时时间。这种方法更适用于分布式环境,因为所有节点都可以访问同一份配置。 3. **代码表...

    一个简单的quartz动态定时示例演示

    在这个简单的示例中,我们将探讨如何利用Quartz来实现动态定时任务,并理解相关的核心概念。 首先,让我们了解Quartz的基本组成部分: 1. **Job**:在Quartz中,Job代表了实际要执行的任务。你需要创建一个Job类,...

    Springboot2-Quartz 后台可动态配置的定时任务

    本项目“Springboot2-Quartz 后台可动态配置的定时任务”是基于SpringBoot 2.x版本与Quartz Scheduler整合的一个示例,它展示了如何在后台管理系统中动态地创建、更新和删除定时任务,以及监控这些任务的状态,为...

    quartz动态任务管理

    这个"quartz动态任务管理"源码包很可能是针对Quartz框架的实现,旨在帮助开发者更方便地管理和控制任务的生命周期。 Quartz的核心概念包括作业(Job)、触发器(Trigger)和计划程序(Scheduler)。作业是你要执行...

    Quartz 动态调度

    这样,我们就可以根据实际需要,动态地更新任务的执行时间表。 在第三步,我们需要配置Spring的相关文件,例如applicationContext-hibernate.xml。在Spring的配置文件中,我们将定义任务的详细信息,包括任务的名称...

    Quartz动态项目案例。

    本项目案例是关于Quartz动态任务设置的一个实践,旨在帮助开发者更好地理解和运用Quartz进行灵活的任务调度。 首先,Quartz的核心概念包括作业(Job)、触发器(Trigger)和计划程序(Scheduler)。作业是你想要...

    quartz动态定时调度完整代码

    在实际应用中,Quartz的动态调度功能意味着你可以根据程序运行时的条件改变任务的执行计划。例如,你可以根据业务需求在运行时新增、修改或删除Trigger,以实现灵活的任务调度。结合Spring框架,Quartz还能与Spring...

    spring+quartz实现动态设置定时任务

    Quartz允许在运行时修改作业的调度属性,如执行频率、延迟时间等,这正是“动态设置定时任务”的核心。 **动态设置定时任务** 意味着在应用程序运行过程中,我们可以根据业务需求动态地添加、删除或修改定时任务。...

    quartz实例 自动生成 表达式 动态更新 xml文件 tomcat自动加载

    通过使用Quartz的API,我们可以读取XML文件,解析其中的Job和Trigger定义,然后在运行时添加、修改或删除这些任务,实现配置的动态更新。这通常涉及监控XML文件的变化,一旦检测到更新,立即加载新的配置并应用到...

    spring boot + quartz 动态管理 分布式

    总之,"Spring Boot + Quartz 动态管理 分布式"的主题涵盖了Spring Boot的快速开发特性,Quartz的定时任务调度能力,以及在分布式环境下的任务管理。通过学习和实践,开发者能够构建出一个灵活、健壮的定时任务系统...

    spring+quartz动态定时任务创建 +mybatis

    将Spring与Quartz结合,我们可以方便地在运行时动态创建和修改定时任务。首先,我们需要在Spring配置文件中声明一个SchedulerFactoryBean,然后定义JobDetail和Trigger,分别表示任务内容和触发条件。JobDetail可以...

    quartz 任务调度可运行例子

    Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中实现复杂的时间调度任务。这个例子提供了 Quartz 的实际运行示例,帮助开发者更好地理解和使用这个强大的工具。 首先,让我们了解一下 Quartz 的基本概念...

    Spring Quartz动态配置时间.rar

    - 动态配置意味着可以在运行时添加、更新或删除任务和触发器,无需重启应用。 4. **基于注解的任务定义**: - Spring提供了一个名为`@DisallowConcurrentExecution`的注解,可以确保同一作业实例不会并行执行。 ...

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    对于动态定时任务,Quartz提供了一种灵活的方式,允许在运行时添加、修改或删除任务。例如,可以创建一个服务接口,通过调用该接口来动态调整Trigger,从而达到改变任务执行频率或暂停任务的目的。 Quartz的集群...

    Quartz动态添加信息

    在Quartz中,动态添加、删除和修改任务是常见的需求,这使得应用程序能够根据运行时的情况来调整其执行计划。下面我们将深入探讨如何在Quartz中实现这些操作。 1. **动态添加任务** 动态添加任务是指在程序运行时...

    quartz整合springbatch动态集群定时实现mysql参考

    动态集群是指能够在运行时动态添加或移除服务器节点的集群环境。在Quartz中实现动态集群,主要是通过共享JobStore实现的,例如使用SQLJobStore,这样所有节点都可以访问同一个作业存储,从而确保任务的一致性和避免...

    Quartz动态调度示例

    Quartz是一款开源的作业调度框架,它允许开发者创建和管理定时任务,以便在特定时间执行。在本示例中,我们将深入探讨如何在Spring Boot应用中集成Quartz以实现动态调度。 首先,让我们理解Quartz的基本概念。...

    maven+springboot+myBatis+quartz+mysql+Layui动态页面管理quartz定时任务(有sql文件)

    它可以按预定的时间间隔运行作业,支持复杂的调度策略。在这个项目中,Quartz被用来实现动态管理的定时任务,例如周期性的数据处理或服务调用。 5. **MySQL**:MySQL是一种流行的关系型数据库管理系统,广泛用于...

Global site tag (gtag.js) - Google Analytics