quartz手动执行定时任务的实现

本文介绍两种使Quartz定时任务立即执行的方法。方案一通过更新数据库qrtz_triggers表中的NEXT_FIRE_TIME字段实现,确保Java服务器与数据库时钟同步。方案二直接调用任务方法的executeInternal函数,抛出异常时进行错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方案1:   修改qrtz_triggers 表的NEXT_FIRE_TIME 字段

// 入参是triggerName, triggerGroup,延迟8秒执行

public void executeJobNow(String triggerName, String triggerGroup) {

    Map<String, Object> params = new HashMap<>();

    params.put("interval", System.currentTimeMillis() + 8000); // 8秒

    params.put("triggerName", triggerName);

    params.put("triggerGroup", triggerGroup);

    qrtzMapper.updateNextFireTime(params);

}

 

// 实际上是修改qrtz_triggers 表的NEXT_FIRE_TIME 字段

// 前提是java服务器和数据库时钟相等

<update id="updateNextFireTime" parameterType="java.util.Map">

    update qrtz_triggers set NEXT_FIRE_TIME = #{interval}

    where trigger_name = #{triggerName} and trigger_group = #{triggerGroup}

</update>

 

 

方案2: 直接调用task方法调用executeInternal方法

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值