当前位置: 首页 > 知识库问答 >
问题:

只执行一行中的第一个作业

蒋典
2023-03-14
    JobDetail job = JobBuilder.newJob(ScheduledAppJob.class)
                              .withIdentity(stringId)
                              .build();

    Trigger trigger = TriggerBuilder.newTrigger()
                                    .withIdentity(stringId)
                                    .startAt(date)
                                    .build();

    try
    {
        scheduler.scheduleJob(job, trigger);
        dateFormat = new SimpleDateFormat("dd MMM yyyy, HH:mm:ss");
        String recurringTime = dateFormat.format(date);
        logger.info("Scheduling recurring job for " + recurringTime);
    }
    catch (SchedulerException se)
    {
        se.printStackTrace();
    }
org.quartz.scheduler.instanceName = AppScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

共有1个答案

公西星海
2023-03-14

现在好像起作用了。没有遇到更多的问题。可能是配置问题,因为我已将配置文件移动到/src/main/resources中。还请尝试打开日志,以帮助调试:

log4j.logger.com.gargoylesoftware.htmlunit=DEBUG

我们还添加了一个JobTriggerListener来帮助处理日志

private static class JobTriggerListener implements TriggerListener
    {
        private String name;

        public JobTriggerListener(String name)
        {
            this.name = name;
        }

        public String getName()
        {
            return name;
        }

        public void triggerComplete(Trigger trigger, JobExecutionContext context,
                                    Trigger.CompletedExecutionInstruction triggerInstructionCode)
        {

        }

        public void triggerFired(Trigger trigger, JobExecutionContext context)
        {

        }

        public void triggerMisfired(Trigger trigger)
        {
            logger.warn("Trigger misfired for trigger: " + trigger.getKey());
            try
            {
                logger.info("Available threads: " + scheduler.getCurrentlyExecutingJobs());
            }
            catch (SchedulerException ex)
            {
                logger.error("Could not get currently executing jobs.", ex);
            }
        }

        public boolean vetoJobExecution(Trigger trigger, JobExecutionContext context)
        {
            return false;
        }
    }

检查更新的配置文件:

#============================================================================
# Configure Main Scheduler Properties
#============================================================================

org.quartz.scheduler.skipUpdateCheck = true
org.quartz.scheduler.instanceName = MyAppScheduler
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 25
org.quartz.threadPool.threadPriority = 9

#============================================================================
# Configure JobStore
#============================================================================

org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
 类似资料:
  • 问题内容: 我正在尝试使用jaxb- maven插件使用JAXB将多个XSD转换为不同包中的POJO。我已将其设置为使用多个执行块,然后执行第一个执行块,然后出现一条消息:模式或绑定文件中未检测到更改 这是我pom.xml的摘录: 这是我收到的错误消息: 如果我交换执行块,则第一个总是执行,其余两个块得到相同的消息。 关于如何解决这个问题的任何想法? 问题答案: 通过升级到版本1.6进行了修复 和

  • 我在同一个drl文件中有两个Drools规则,如下所示: 我的想法是用第一条规则处理所有处于临界状态的事件。然后使用第二个规则,如果任何阀门有警报,这是由“如果临界”规则设置的,发送一个短信。 你知道吗?用口水可能吗?

  • 我想一个接一个地运行两个工作。是的,我确实在网上搜索过,但他们有解决方案,包括在第一份工作中增加第二份工作。但我有不同的要求。我会在第一批作业执行完成后得到一个通知,而第二批作业只有在收到这个通知后才会运行。是否有可能在Spring Boot中一个接一个地运行两个作业。请救命!

  • 我正在学习angularjs,作为一个测试项目,我正在轮询一个返回活动进程列表(它们的pid)并显示这些进程的服务器。 客户端代码如下所示: 这适用于Firefox和Chrome,但不太适用于Internet Explorer 11。 所有浏览器每秒都执行ReloadData方法,但IE11实际上并不从服务器获取流程数据。Firefox和Chrome确实每秒都会获取数据。我也可以在服务器的输出中看

  • 我试图在节点JS中的另一个cron作业中运行一个cron作业。外部cron作业在第1天只执行一次:内部cron作业在第2天执行1次:内部cron作业在第3天执行2次:内部cron作业执行3次 为什么它要多次执行,尽管我在cron作业中调用它一次