2011-12-06 62 views
2

我想對在玩多個併發作業管理一些建議:其實,我用我的應用二distincts工作:Playframework兼職管理

  • 的第一份工作是一個快速:它試圖使用WS.url()方法到達兩個不同的URL並將結果狀態記錄到數據庫中。 如果網站沒有響應,則會執行三次重試。這項任務僅需不到20秒即可完成,並將每5分鐘運行一次。

  • 第二項工作是一個緩​​慢的工作:如果它們的狀態記錄到數據庫中,它會將內容解析到兩個網站中。這個過程大約需要2分鐘,並且每小時完成一次。

我想確定如果一個工作正在運行,另一個工作不能提出,並且要等待電流的結束開始。 我很新的鎖使用和併發訪問,所以每一個建議對我來說是寶貴的!

回答

2

解決方法是在數據庫中保留一些標誌(記錄狀態),以便第二個作業檢測它是否可以運行。現在,這將是一個解決方案,但在某些情況下可能會有一些問題。

鑑於這兩個作業是鏈接的(一個「ping」一個url,另一個解析它),第一個執行速度非常快,(在給定的場景中)第一個作業檢索的狀態與任何人除了第二份工作,並且每小時使用最新結果每小時執行12次,都會浪費資源(無論是在您的網站還是在網站上),我都會建議將這兩項任務合併爲一個單一工作。

如果你有一份工作,你不必再擔心併發問題。每小時運行一次。

+0

謝謝您的回答! :) –

+0

事實上,我們的目標是每週進行解析,而'ping'通常足以被動,並在站點無法訪問時發送警報郵件。解析器也將使用來自pinger的訪問信息。所以這兩項工作是必要的。我暫時減少測試的就業率... –

2

如果你想讓它簡單,你可以在第一個啓動第二個作業..

您檢查服務後,最後一行是高達

new URLParserJob().now(); 
+0

感謝您的回答!由於解析每週只需要一次,因此每次ping時都會浪費資源。 ping進程在這裏監視站點(並在必要時創建郵件提醒)並打開解析器。 pinger必須是反應式的(就像每小時執行一次),解析器需要每週做一次報告,因此它的速率應該是每週一次。 –

相關問題