标签: quartz-scheduler

这个 cronExpression 正确吗?

不知道下面的表述是否正确:

<property name="cronExpression" value="0  0  12  2  *  MON-FRI ?"/> 
Run Code Online (Sandbox Code Playgroud)

我尝试将我的触发器配置为每个月的第二天触发,无论年份如何,中午,一周中的某一天必须在周一和周五之间。

如果有人可以帮助我,我将不胜感激。提前致谢。

quartz-scheduler cronexpression

4
推荐指数
2
解决办法
2万
查看次数

将参数传递给Quartz中的作业

目前我有一个代码,它有一个java main方法,并且它的执行需要很少的命令行参数.我正在将这个作为一个石英工作,我想把这个论点传递给这个工作.

有没有办法可以做到?我对JobDataMap进行了一些分析,但我不确定是否可以将它用于此目的.

此外,这项工作将是一次性工作,需要暂停并继续用户的一些操作.我应该为石英这种情况扩展或使用什么样的工作?

非常感谢你的时间.

干杯,阿比

quartz-scheduler command-line-arguments

4
推荐指数
1
解决办法
6480
查看次数

Quartz 预定作业未触发 - 可能出现未处理的异常?

我有一个使用 Quartz 库的带有预定作业的 Web 应用程序。最近我遇到了一个工作似乎没有被解雇的情况。我做了一些阅读,显然如果作业抛出异常,Quartz 调度程序将尝试再次执行该作业。这是真的?

无论如何,我基于上述陈述是正确的假设进行了一些故障排除。所以假设我有以下代码片段:

try {
   method.invoke(object, params);
}
catch (ExceptionA ea) {
   ea.printStackTrace();
}
catch (ExceptionB eb) {
   eb.printStackTrace();
}
// and so on so forth, catching a bunch of specific Exceptions
Run Code Online (Sandbox Code Playgroud)

这里要注意的重点是Exception 本身没有被捕获

因此,假设被调用的方法引发了未处理的异常。

public void methodBeingInvoked() throws UnhandledException {
Run Code Online (Sandbox Code Playgroud)

这里会发生什么?

java exception scheduler quartz-scheduler

4
推荐指数
1
解决办法
3140
查看次数

不同的 Quartz TriggerState 枚举状态代表什么?

不同的 Quartz TriggerState 枚举状态代表什么以及它们如何设置?

我有一个用于运行预定作业的 Spring 3.1 Quartz 2.0.1 实用程序。我的工作只重复固定的次数。我希望我的 TriggerState 在所有工作完成后进入 COMPLETE。但是,我看到它从 NORMAL 变为 NONE,而我从未看到 COMPLETE。我找不到太多关于 TriggerState 行为的文档。

相关Java代码:

SchedulerFactory schedFactory = new StdSchedulerFactory();

Scheduler scheduler =  = schedFactory.getScheduler();
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();

while (System.in.available() == 0) {
    // Get trigger state
    TriggerState triggerState = scheduler.getTriggerState(triggerKey);
    if ((triggerState == TriggerState.COMPLETE)) {
        break;
    }
    // Sleep for 100 msec
    Thread.sleep(SCHEDULER_SLEEP_TIME);
}
Run Code Online (Sandbox Code Playgroud)

Spring xml 中的作业配置:

<bean id="mockJobDetail"
      class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
  <property name="jobClass"
            value="mypackage.MockJob"/>
</bean>

<bean id="simpleMockJobTrigger"
      class="org.quartz.impl.triggers.SimpleTriggerImpl" >
  <property name="name" value="simpleMockJobTrigger" />
  <!-- run …
Run Code Online (Sandbox Code Playgroud)

java quartz-scheduler

4
推荐指数
1
解决办法
7371
查看次数

如何持久化来自远程客户端的 JobDataMap 更改

我正在为 Quartz.NET 开发一个基本的 Web 客户端,它支持在运行时修改作业的 JobDataMap。

我的工作装饰有以下属性,我认为这些属性是使工作有状态所必需的:

[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public class SampleTenantJob : IJob { ... }
Run Code Online (Sandbox Code Playgroud)

在运行时,我执行以下代码但 JobDataMap 没有持久化:

    public void UpdateJobProperties(string jobName, string groupName, IDictionary<string, object> properties)
    {
        IJobDetail job;
        if (!TryGetJob(jobName, groupName, out job))
            return;

        foreach (var property in properties)
        {
            if (job.JobDataMap.ContainsKey(property.Key) && property.Value != null)
            {
                job.JobDataMap.Put(property.Key, property.Value);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我最初认为这是因为我正在使用XMLSchedulingDataProcessorPluginfor 作业,但我已经尝试了内存(RAMStore)AdoJobStore并且仍然无法保留JobDataMap远程客户端所做的更改。

quartz-scheduler quartz.net

4
推荐指数
1
解决办法
3808
查看次数

Quartz JobDataMap 不适用于非原始类型

Quartz JobDataMap有以下问题。我希望当使用简单的 Quartz Job并将非原始对象(例如StringBuilder 的实例)传递JobDateMap 时,应该始终使用我放置的不同对象副本调用方法execute(从我的工作)。不幸的是,我总是得到我放入JobDateMap的对象实例(就像它是一个 StatefulJob)。

在下面的示例中,我希望在每次调用中都得到一个 '*',而每次我都会再得到一个 '*'。

public class MyJob implements Job {

    public static void main(String[] args) throws SchedulerException {

        SchedulerFactory schedFact = new StdSchedulerFactory();
        Scheduler sched = schedFact.getScheduler();

        JobDetail jobDetail = new JobDetail("job", Scheduler.DEFAULT_GROUP, MyJob.class);
        jobDetail.getJobDataMap().put("param", new StringBuilder());

        Trigger trigger = TriggerUtils.makeImmediateTrigger("trigger", 10, 100);
        trigger.setGroup(Scheduler.DEFAULT_GROUP);

        sched.scheduleJob(jobDetail, trigger);
        sched.start();

        try {
            Thread.sleep(1000L);
        } catch (Exception e) {}

        sched.shutdown(true);

    }

    @Override
    public void execute(JobExecutionContext context) …
Run Code Online (Sandbox Code Playgroud)

java quartz-scheduler

4
推荐指数
3
解决办法
1万
查看次数

通过Quartz.NET安排任务在特定时间每天运行

我每天使用Quartz.NET在特定时间执行任务,这是我的代码:

public class TestSchedule : ISchedule
    {
        public void Run()
        {

            DateTimeOffset startTime = DateBuilder.FutureDate(2, IntervalUnit.Second);

            IJobDetail job = JobBuilder.Create<HelloJob>()
                                       .WithIdentity("job1")
                                       .Build();

            ITrigger trigger = TriggerBuilder.Create()
                                             .WithIdentity("trigger1")
                                             .StartAt(startTime)
                                             .WithDailyTimeIntervalSchedule(x => x.OnEveryDay().StartingDailyAt(new TimeOfDay(7, 0)).WithRepeatCount(0))
                                             .Build();

            ISchedulerFactory sf = new StdSchedulerFactory();
            IScheduler sc = sf.GetScheduler();
            sc.ScheduleJob(job, trigger);

            sc.Start();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的代码正在运行,但是问题是现在只能运行一次(似乎是因为WithRepeatCount(0)),怎么能说每天7点运行?
PS:我不想CronTrigger这样做。

quartz-scheduler quartz.net

4
推荐指数
1
解决办法
5066
查看次数

Quartz JDBC Job Store - 维护/清理

我目前正在使用JDBC作业存储在负载平衡环境中设置Quartz,我想知道每个人如何管理石英作业存储DB.

对我来说,Quartz(2.2.0)将作为版本化应用程序的一部分进行部署,同时一台服务器上可能存在多个版本.我使用符号XXScheduler_v1来确保多个调度程序一起使用.我的代码工作正常,石英表适当地填充了触发器/作业/等.

我注意到的一件事是,在取消部署应用程序时似乎没有发生数据库清理.我的意思是,即使不再有调度程序处于活动状态,Job/Scheduler数据似乎仍保留在quartz数据库中.

这是不太理想的,我可以想象,我的模型数据库将变得比它随时间变化所需的更大.我错过了如何连接一些清理过程吗?或石英希望我们手动进行数据库清理?

干杯!

quartz-scheduler

4
推荐指数
2
解决办法
7277
查看次数

石英触发器构建器 startnow 在启动过程中不触发触发器

我正在尝试使用石英构建器来创建 cron 触发器并尝试提供 startnow 指令。但是触发器没有启动,而是在完成给定的时间间隔后才启动。有人可以帮助我在启动服务器期间启动触发器吗?我使用的是普通石英,没有弹簧。

Trigger trigger = newTrigger()
        .withIdentity(SchedulerConstants.TRIGGER_CLARITY,SchedulerConstants.QI_GROUP)
        .withSchedule(cronSchedule("0 0/60 * * * ?").withMisfireHandlingInstructionDoNothing())
        .startNow()
        .build();
Run Code Online (Sandbox Code Playgroud)

quartz-scheduler

4
推荐指数
1
解决办法
8368
查看次数

仅用一个线程配置Quartz.net或按顺序制作线程

我在服务中有一项业务,我不知道线程需要多长时间才能完成其工作,因此我无法设置确切的时间间隔。或者以另一种方式,我想知道在前一个线程完成工作后如何设置线程启动。

.net c# quartz-scheduler quartz.net

4
推荐指数
1
解决办法
121
查看次数