不重启项目,动态改变cron定时器的执行时间

在OA项目中,实现了用户通过前端自由修改钉钉推送的定时任务时间。无需重启项目,通过停止原有定时器,注册新定时器来实现动态变更。代码逻辑包括查询数据库初始化定时器,使用Map记录定时器状态,修改时间时调用特定方法更新定时器并在Map中覆盖旧记录。已知问题包括服务器上有时执行几次后停止,后续会更新解决方案。

之前在做oa项目的钉钉推送功能的时候,组长让我增加一个定时推送的功能,最好能实现用户在前端能自由修改时间。但是网上查了发现很多方法都需要重启项目才实现,后来从一篇博客上翻到说可以换一种思路,并不是去修改定时器时间,可以通过将之前的定时器停止注销,然后重新开启一个新的定时器来实现。

先上代码吧,基本上除了去掉了部分注入和方法参数的处理过程,整体逻辑都还是在的

/**
 * 钉钉消息推送定时器Controller
 *
 * @author zjs
 * @since 2019-03-21
 */
@Controller
@EnableScheduling
public class DingdingTimingController implements SchedulingConfigurer {
    private final static Logger logger = LoggerFactory.getLogger(DingdingTimingController.class);
    /**
     * (安装维护)信息
     */
    @Transactional(readOnly = false)
    public String timerOfOptRepair(DingdingTimer dingdingTimer) {
        try {
            //处理变量参数
            List<Object> result = dealResult();
            //处理文本整体
            String content = dealContent();
            dingdingService.sendMsg();
            logger.info("安装维护信息,钉钉定时推送成功);
            return Constants.SYSDIC_COMMON_SUCCESS;
        } catch (Exception e) {
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值