【问题标题】:Liferay scheduler is not firing on clusteringLiferay 调度程序没有在集群上触发
【发布时间】:2015-08-14 19:54:44
【问题描述】:

我在 portlet 中使用了调度程序,它将每 5 分钟触发一次。

以下是配置: liferay-portlet.xml:

<scheduler-entry>
  <scheduler-description>
   This scheduler is used to invoke the update and delete results
  </scheduler-description>
 <scheduler-event-listener-class>com.test.myown.scheduler.action.GetResultsScheduler</scheduler-event-listener-class>
  <trigger>
     <simple>
        <simple-trigger-value>5</simple-trigger-value>
        <time-unit>minute</time-unit>
      </simple>
  </trigger>
</scheduler-entry> 

我的课是:

  public class GetResultsScheduler implements MessageListener{
     public void receive(Message message) throws MessageListenerException {
         // some code here
     }
  }

我们正在使用 liferay 6.1,weblogic server 这里的问题是,服务器有2个节点, 调度程序在 node1 中触发 5 分钟 节点 2 中没有调度器触发

我的意思是,调度程序在节点 1 中工作,而不在节点 2 中工作。

任何人都可以对这个问题有任何想法吗?

【问题讨论】:

标签: liferay quartz-scheduler liferay-6 weblogic-10.x


【解决方案1】:

我想说这是意料之中的:当您运行一些频繁的作业时,您可能不想在每台机器上同时执行它们,因为它们会发生冲突。您已经说过该作业必须每 5 分钟执行一次,而不是每 5 分钟执行两次(就像每台机器都会触发它一样)。

如果您取消 node1,我还希望 node2 接管执行计划作业的职责。这将很好地检验上述假设的正确性。

此外,您不应依赖此类作业在每个 VM 中执行(可能是操纵公共状态,通过类加载器共享)。如果您修改缓存的内容,集群通信应注意使类无效。

如果您对此有疑问,您要么违反了(我的)对 VM 中全局状态的假设,要么您没有正确配置集群缓存失效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多