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

Grails Quartz插件在作业执行之间不记得有状态数据?

薛保臣
2023-03-14

我需要在Grails Quartz插件作业的执行之间保持一个计数器值。它以正确的时间间隔运行,我可以设置jobDataMap并正确地读回值(在相同的执行运行期间),但它拒绝在执行之间记住它。

我按照文档的建议设置了concurrent=false。有什么想法吗?我只需要坚持并递增一个计数器。如果可能的话,我想避免使用数据库,我想这应该只是使用内存?或者有其他工作?

package myPackage
class MyJob {
    static triggers = {
        simple repeatInterval: 5000l // execute job every 5 seconds
    }

    def concurrent = false // Don't run multiple simultaneous instances of this job

    def execute(context) {
        if(context.jobDetail.jobDataMap['recCounter'] == null) { context.jobDetail.jobDataMap['recCounter'] = 1 }
        else { context.jobDetail.jobDataMap['recCounter'] = context.jobDetail.jobDataMap['recCounter'] + 1 }

        println(context.jobDetail.jobDataMap['recCounter'])
}
1
1
1
1
etc..

共有1个答案

徐文彬
2023-03-14

我在应用程序中从未使用过context对象,但可以直接实现计数器:

class MyJob {
    //some static stuff

    AtomicInteger counter = new AtomicInteger()

    def execute(context) {
        counter.incrementAndGet()    
        println counter.intValue()
    }
}
 类似资料:
  • 使用可用选项(localStorage,Cookie等)将树的状态(选定节点,打开的节点)保存在用户计算机上 $.jstree.defaults.statestate plugin 存储状态插件的所有默认值 $.jstree.defaults.state.keystate plugin 保存当前树时使用的键的字符串(如果在项目中使用多个树,则更改)。默认为 jstree. $.jstree.def

  • Build.Gradle: 作业配置: 运行批处理作业的main(): 定义两个读取器的Bean配置如下: 以前的研究: 我对异常消息的搜索:所需的类型“org.springframework.data.mongodb.core.query.query”未获取任何相关结果。使用关键词的研究,如这个问题标题中的关键词,也没有提供多少线索。 现在以以下跟踪结束:

  • 我有一个应用程序,客户机发送HTTP请求,这些请求被翻译成Spring批处理作业参数并触发一个作业。我为响应和作业执行的结果生成。 此时,我无法获得正在运行的作业的。 获取它的方法是查询表,该表以作为键/值,因此我使用条件进行查询: 从这里开始,我希望向客户提供正在运行/或正在运行的作业的全部详细信息,包括当前步骤及其状态的详细信息。所以json有效负载应该如下所示: 我知道spring batc

  • 问题内容: 我试图了解React的有状态和无状态组件之间的确切区别。好的,无状态组件只会做某事,但是什么也不会记住,而有状态组件可能会做同样的事情,但是它们会记住其中的内容。那是理论。 但是现在,在检查如何使用代码显示此内容时,我有点麻烦了。以下两个示例对吗?唯一的区别确实是函数的定义。 无状态组件的示例: 有状态组件的示例: 问题答案: 是的,那是有区别的。除了有 状态 组件,您还可以使用以下方

  • 问题内容: 我刚刚开始学习angularjs,并且正在使用angular-ui- router。我正在尝试使用一种状态将数据从一种状态发送到另一种状态,但是我没有成功。这是我到目前为止的内容: 我没有故意包含html,因为我假设不需要它,请告诉我,我将添加它。 我将状态配置如下: 调用my时,将执行以下代码: 当页面处于活动状态时,我正在尝试打印: 正如状态所示,$ stateParams是一个空

  • 问题内容: 如果构建失败,我需要运行某些shell命令。是否有任何传递给shell的变量包含此类信息?或者也许我可以在文件中找到它? 我需要这样的东西: 我已经打印过了,没有什么可以直接说构建失败了。 问题答案: 您正在寻找条件构建步骤插件。添加“条件步骤(单个)”作为最后的构建步骤,并使用“当前构建状态”作为条件。我喜欢这个插件,但是还没有使用这个特殊条件。