全部
常见问题
产品动态
精选推荐
功能建议

分析中 已回复 待规划 {{opt.name}}
分析中 已回复 待规划
手动触发定时任务

管理 管理 编辑 删除
 
@RestController
@RequestMapping("/api")
public class Controller {
 
    private final Logger logger = LoggerFactory.getLogger(Controller.class);
 
    @Autowired
    private ThreadPoolTaskScheduler threadPoolTaskScheduler;
 
    @Bean
    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
        return new ThreadPoolTaskScheduler();
    }
	
	private Map<Integer, ScheduledFuture<?>> taskMap = new HashMap<>();
 
 
    /**
     * 开启方案,并且手动触发定时任务
     *
     * @return
     */
    @PostMapping("/startScheduler/{id}")
    public Map<String, Object> startScheduler(@PathVariable Integer id) {
        logger.info("REST request to startScheduler===>:" + id);
        Map<String, Object> result = new HashMap<>();
		//业务代码已删除,这里只展示定时任务相关代码
		//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
		//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
		
            ScheduledFuture<?> future = startCron(planId, taskIds, timeIntervalStr);
            taskMap.put(id, future);
            result.put("code", 0);
            result.put("msg", msg);
			
        return result;
    }
 
 
    //开启定时任务
    public ScheduledFuture<?> startCron(String planId, String taskIds, String timeIntervalStr) {
 
        ScheduledFuture<?> future = threadPoolTaskScheduler.schedule(new TaskJob(planId, taskIds, timeIntervalStr), new Trigger() {
            @Override
            public Date nextExecutionTime(TriggerContext triggerContext) {
				//10s触发执行一次
                return new CronTrigger("0/10 * * * * *").nextExecutionTime(triggerContext);
            }
        });
        logger.info("---------定时任务开始执行-------");
        return future;
    }
 
 
    /**
     * 停止方案,并且关闭定时任务
     *
     * @param id
     * @return
     */
    @PostMapping("/stopScheduler/{id}")
    public Map<String, Object> stopScheduler(@PathVariable Integer id) {
        logger.info("REST request to stopScheduler===>:" + id);
        Map<String, Object> result = new HashMap<>();
		//业务代码已删除,这里只展示定时任务相关代码
		//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
		//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 
 
        //关闭定时任务
        boolean flag = stopCron(id);
        if (flag) {
            result.put("code", 0);
            result.put("msg", "关闭该方案的定时任务成功");
        } else {
            result.put("code", 0);
            result.put("msg", "定时任务已不存在");
        }
        return result;
    }
 
 
 
    //根据id关闭指定的定时任务
    public boolean stopCron(Integer id) {
        ScheduledFuture<?> scheduledFuture = taskMap.get(id);
        if (null == scheduledFuture) {
            return false;
        }
        scheduledFuture.cancel(true);
        taskMap.remove(id);
        return true;
    }
 
 
}

 
public class TaskJob implements Runnable {
 
    private final Logger logger = LoggerFactory.getLogger(TaskJob.class);
 
    private String planId;
    private String taskIds;
    private String timeIntervalStr;
 
    public TaskJob(String planId, String taskIds, String timeIntervalStr) {
        this.planId = planId;
        this.taskIds = taskIds;
        this.timeIntervalStr = timeIntervalStr;
    }
 
 
    //注意此处不能使用@Autowired注入
	//因为Scheduled的加载时机要早于Autowired,定时任务会开启一个新的进程,
	//而spring值会注入到初始的类中,但这个有值类并没有被使用,而是调用了无值的类。
 
    private final PaTaskService paTaskService = ApplicationContextUtil.getBean(PaTaskService.class);
    private final PaTaskController paTaskController = ApplicationContextUtil.getBean(PaTaskController.class);
	
	
    @Override
    public void run() {
        
		//写定时任务逻辑
 
 
    }
 
 
}


{{voteData.voteSum}} 人已参与
支持
反对
请登录后查看

CRMEB-慕白寒窗雪 最后编辑于2023-04-27 09:34:15

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}} 【已收集】
{{item.floor}}# 沙发 板凳 地板 {{item.floor}}# 【已收集】
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
分享
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
收起 展开更多
查看更多
打赏
已打赏¥{{reward_price}}
3484
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服
CRMEB咨询热线 400-8888-794

扫码领取产品资料

功能清单
思维导图
安装教程
CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服