在我的應用程序中,我需要處理上傳的文檔並將處理結果放在數據庫中。
文檔存儲在文件系統中,元數據存儲在數據庫中。
對於每個文檔,需要打開並處理來自磁盤的文件,而不是相應地更新數據庫中的元數據。處理可能是昂貴的並且需要很長時間。
我打算做的是:在Play 2.1(Java)中運行後臺任務的正確方法是什麼?
- 跨度N個任務,一個任務來處理一個文檔
- 每個任務將去尋找最古老的,「未處理」文件
- 任務將其標記爲」進取」的數據庫,並開始處理它
- 文檔處理任務後,將更新元數據,並在數據庫將其標記爲‘已處理’
- 任務會是
假設應用程序是用Java編寫的,而不是Scala,那麼實現這個槓桿化Play和Akka的正確/最簡單的方法是什麼?源代碼示例也將受到讚賞。
Michael,你顯然是對的,但這只是一個原型應用程序,它將運行在單個JVM實例上。我的理解是,Play使用Akka,並提供服務請求和我自己的任務 - 所有這些只是來自Akka視角的不同演員執行的任務。所以我甚至在想,「在Play應用程序中」實際上是「在Akka」中? – 2013-05-05 07:20:15
對。使用Akka庫。 Sen消息。讓演員執行後臺任務。但爲了簡潔的設計,假設演員不會在同一臺機器上。實際上,爲什麼不爲後臺任務執行者啓動第二個JVM。這可以幫助您創建一個可以擴展到1000臺機器的乾淨設計。 – 2013-05-05 08:52:47