【问题标题】:Using Atlasboard Job without a scheduler在没有调度程序的情况下使用 Atlasboard Job
【发布时间】:2016-08-11 18:16:26
【问题描述】:

在构建 Atlasboard 作业时,我想控制将数据推送到小部件的位置和时间。

  1. 我找不到记录“间隔”配置参数的位置 - 我的理解是,该作业是在每个间隔毫秒安排的。

  2. 我想控制我的工作何时更新小部件。因此我做了一个小测试:

    setInterval(function() {
        x = x+1;
        jobCallback(null, {title: config.widgetTitle + "  - "+x});
    }, 10000);
    

起初我很高兴,因为它似乎奏效了,但后来我注意到日志消息:

[dashboard: xxx] [job: xxx] 14:04:27.93 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)

[dashboard: xxx] [job: xxx] 14:04:27.96 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)

[dashboard: xxx] [job: xxx] 14:04:37.94 <warn> WARNING!!!!: job_callback executed more than once for job xxx in dashboard xxx (scheduler.js)

我可能会补充一点,几分钟后,作业似乎会自我复制,并且全局参数似乎无法在作业实例之间保持其全局值 - 以至于在我的单个“重复作业”变成十个作业后不久,而不是 100 个等。

有没有办法更好地控制何时将数据推送到小部件? 有比https://bitbucket.org/atlassian/atlasboardhttp://atlasboard.bitbucket.org/ 更好的文档吗?

【问题讨论】:

    标签: atlasboard


    【解决方案1】:

    我在搜索和查看 jobWorker 代码的过程中发现了以下内容(我在任何地方都找不到任何文档)。

    有一个 pushUpdate 成员函数被添加到 jobWorker - 它似乎最好在 Job onInit() 期间使用 - 这样我们保证它只被激活一次!

    onInit: function (config, dependencies) {
       var jobWorker = this;
       var x = 0;
       setInterval(function() {
           x = x+1;
           jobWorker.pushUnpdate({title: config.widgetTitle + "  - "+x);
       }, 10000);
    }
    

    请注意,如果您控制更新的调度,则无需实现 Job onRun() - 这意味着不会为您的 Job 激活调度程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2019-04-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2019-06-14
      • 1970-01-01
      相关资源
      最近更新 更多