xxl-job 任务到时间没有执行

zu0ti5jz  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(26)

Please answer some questions before submitting your issue. Thanks!

版本:2.0.1
偶尔有几个任务到时间了没有触发,日志也没有,求排查问题思路

4ktjp1zp

4ktjp1zp2#

2.2.0 同样遇到这个问题,有个时候提交的任务死活不执行。 发现任务会自动暂停,不知道什么原因,也没有日志提醒,暂时的解决方案是提交后,直接查询下任务的状态,如果状态是暂停,就直接再次变动为正常。 下面代码是查询任务是否提交和任务状态的。
排查步聚:
1、确认任务是否提交成功。
2、确认任务状态。

Runnable runnable = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        TimeUnit.SECONDS.sleep(10);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.println("=====打印任务===========");
                    // 打印所有的scheduler
                    GroupMatcher<JobKey> matcher = GroupMatcher.anyJobGroup();
                    Set<JobKey> jobKeys = null;
                    try {
                        jobKeys = scheduler.getJobKeys(matcher);
                        for (JobKey jobKey : jobKeys) {
                            JSONObject jsonObject = new JSONObject();
                            List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey);
                            List<String> triggerStateList = new ArrayList<>();
                            for (Trigger trigger: triggers) {
                                Trigger.TriggerState triggerState = scheduler.getTriggerState(trigger.getKey());
                                triggerStateList.add(triggerState.name());
                            }
                            JobDetail jobDetail = scheduler.getJobDetail(jobKey);
                            jsonObject.put("jobDetail", jobDetail);
                            jsonObject.put("triggers", triggers);
                            jsonObject.put("triggerStateList", triggerStateList);

                            System.out.println(jsonObject.toJSONString());
                        }
                    } catch (SchedulerException e) {
                        log.error("", e);
                    }
                }
            }
        };
        Thread thread = new Thread(runnable);
        thread.start();

相关问题