java - 无法以不同的作业名称和组运行同一类,同时运行

标签 java spring quart

我正在开发 quartz 调度程序。 我创建了一个实现 Job 的类(com.test.job.MyClass) MyClass 包含一些在调度时传入 DataMap 的动态值。基于数据映射值,我需要通过传递此数据映射值来调用其余 API。

因此,在我的数据库中,我定义了具有 className、jobName、groupName 和 operationValue 的作业。我在数据库中定义了多个条目

就像 JOB-1 一样

jobClassName= com.test.job.MyClass
jobName=TEST1
groupName =group
operationValue =ADD

就像 JOB-2 一样

jobClassName= com.test.job.MyClass
jobName=TEST2
groupName =group
operationValue =ADD

我正在尝试安排这两个具有相同 Cron 表达式的作业。但只有 TEST1 作业正在执行。测试2不是。甚至工作名称也不同

Scheduler scheduler = scheduleFactory.getScheduler();
        try {
            Class<? extends Job> jobClassName = (Class<? extends Job>) Class.forName(className);
            JobDetail jobDetails = JobBuilder.newJob(jobClassName).withIdentity(jobName, groupName).build();
            putIntoDataMap(job, jobDetails.getJobDataMap(), user);
            CronTrigger trigger = newTrigger().withIdentity(jobName, groupName)
                    .withSchedule(cronSchedule(cronExpression).inTimeZone("Asia/Kolkata")).build();

            scheduler.scheduleJob(jobDetails, trigger);
        } catch (SchedulerException | ClassNotFoundException ex) {
            throw new CredityRuntimeException(CredityErrorCodes.INVALID_TRIGGER.name(), ex);
        }

在实现的类中,我可以看到ADD操作,所以这意味着只运行了TEST1。我希望两者都应该运行。

public class MyClass implements Job {

@Override
    public void execute(JobExecutionContext context) throws JobExecutionException 
    {
        .....
         String operationValue=jobDataMap.get("Operation");
    }
}

最佳答案

很奇怪。您可能想使用QuartzDesk (我在这里有偏见)或其他一些替代的 Quartz 管理 GUI 工具:

(1) 连接到您的 Quartz 实例并检查注册的作业和触发器。在您的情况下,您应该看到两个作业 TEST1 和 TEST2。

(2)尝试手动执行已注册的作业,看看是否可以调用您的作业。

注:免费QuartzDesk Lite Edition应该完全足够了,可以帮助您快速识别问题。

需要注意的一件事是作业持久性标志。当没有关联的触发器预计将来会触发作业时,Quartz 会自动丢弃非持久性 Quartz 作业。您没有包含 TEST1 和 TEST2 的 cron 表达式,因此您可能需要调用 storeDurably在构建您的工作详细信息时以防万一...

关于java - 无法以不同的作业名称和组运行同一类,同时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62107346/

相关文章:

java - 具有不同主启动的同一项目的不同日志文件

java - 使用 hibernate 时返回的小写列名

java - Spring Boot 如何减少样板代码?

python - 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定(bind)到 $PORT?

java - Grails 3 加载静态文件

java - 使用 Spring Data Repositories 对审计信息进行自定义 JSON 序列化

java - java中如何结束if语句?

java - 如何在 Spring 中为计划进程验证系统用户身份?

python quart 渲染模板

websocket - Quart(异步 Flask)应用程序中的 Autobahn websocket 客户端