2015-08-14 28 views
0

我在portlet中使用了調度程序,每個5分鐘都會觸發一次。Liferay調度程序沒有在羣集上觸發

下面是配置: 的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個節點, 調度程序在節點1中觸發5分鐘 節點2中沒有調度程序觸發

我的意思是,調度程序在節點1中工作,而不在節點2中工作。

任何人都可以對這個問題有什麼想法嗎?

+0

另一個很好的例子是由未鏈接的crossposts生成的重複工作。嘆! https://www.liferay.com/en_GB/community/forums/-/message_boards/view_message/57470411 –

回答

0

我會說這是預期的:當你運行一些頻繁的工作時,你可能不想在每臺機器上同時執行它們,因爲它們會發生衝突。你已經說過這個工作必須每5分鐘執行一次,而不是每5分鐘執行一次(因爲如果每臺機器都會啓動它)。

如果你拿下node1,我還希望node2接管執行預定作業的責任。這將是對上述假設的正確性的一個很好的檢驗。另外,你不應該依賴這樣的作業來執行每個虛擬機(可能操縱共同的狀態,通過類加載器共享)。如果修改緩存的內容,則集羣通信應小心使這些類無效。

如果您遇到問題,那麼您要麼違反虛擬機中的全局狀態假設,要麼您沒有正確配置集羣高速緩存失效。

相關問題