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

有没有办法将参数传递给quartz cron作业?

巫马安怡
2023-03-14

我在石英(Spring启动应用程序)有一个cron工作。我已经为调度器、触发器、cron作业和所有其他bean创建了bean。作业的目的是基于指定的cron表达式运行。但是对于作业的每个新执行,我希望传递一些特定于该作业的数据到作业详细对象。但是目前,当我试图在JobDetailFactory bean中传递这样的数据时,它只被创建一次(第一次),对于作业的所有进一步执行,传递的都是相同的陈旧数据。我想在每次执行作业时传递新的数据。我怎样才能做到呢?

共有2个答案

彭畅
2023-03-14

这就是工作数据地图的用途。请检查JobExecutionContext。方法和JobDataMap API。

如果要在运行时以编程方式修改作业数据映射参数,则有两个选项:

>

  • 获取调度程序引用,例如在JobExecutionContext中。方法,并修改任何作业的所需作业数据映射参数。不幸的是,Quartz API没有提供更新作业详细信息的方法,因此如果希望修改现有作业,则必须删除作业详细信息并添加新的作业详细信息。

    让您的作业实现StatefulJob接口。这使得Quartz在作业执行完成时自动持久化作业数据映射。例如,这可用于在上一个作业执行完成后,从特定点恢复数据处理等。

  • 越嘉树
    2023-03-14

    也许你可以打个电话?在你的工作中是这样的:

    @Resource
    private MyJobJobdataProvider dataProvider;
    
    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobData data = dataProvider.getData();
        /// configure job with the data before actual exection ...
    }
    

    其中MyJobJobdataProvider将是提供此数据的任何组件:

    @Component
    public MyJobJobdataProvider {
        public Data getData() {
            //...
        }
        public void setData(Data data) {
            //...
        }
    }
    

    因此,与其尝试设置新数据,不如让作业在每次执行之前查询它。

     类似资料:
    • 问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。

    • 我有办法 我想知道如果它真的创建了用户,我是否可以对其进行单元测试。但是它没有参数。 我尝试了以下方法: 然而,这实际上让我通过了与扫描仪的争论,这显然是我在测试中无法做到的。还尝试了其他逻辑。我也尝试过使用when(),,,但我找不到解决这个问题的方法,因为我对模仿还比较陌生。 有人能和我分享一些想法吗?

    • “任务”类实例需要包含有关其先决任务的信息。

    • 问题内容: 特别是,我想做这样的事情: 哦,我想这样做而不必修改pom文件或设置任何环境变量。 问题答案: 我认为最适合您。参见此处:http : //maven.apache.org/configure.html 在Unix中: 添加环境变量以指定JVM属性,例如。此环境变量可用于向Maven提供其他选项。 在Win中,您需要通过对话框设置环境变量 通过打开系统属性()添加…环境变量,…在同一对

    • 问题内容: 以下代码的输出是因为从beginIndex到EndIndex-1。但是,令我惊讶的是这里的3(int)因为是两个整数。这背后的概念是什么? 问题答案: 一直到C,从本质上讲是一个窄整数类型,并在需要时隐式转换为C。 在Java中,这在技术上称为“扩展原始转换”,在JLS的5.1.2节中进行了介绍。

    • 问题内容: 我有一个名为 buildall 的管道作业,如下所示: 该 buildall 作业有25个参数。我想将所有 buildall 的参数传递给 job1 。有没有一种简单的方法可以代替手动指定每个参数呢? 在此问题中:向下游作业传递管道参数是一个子问题,但从未得到回答: 甚至更好的是,有没有一种麻烦的方法可以将所有管道参数传递给下游作业。 我有同样的问题。 问题答案: 以下似乎有效(尽管我