2015-11-25 68 views

回答

1

你需要在你的應用程序的modules.enabled(在application.conf)註冊此。

它應該安排一個調用,在0小時後,然後每24小時後在Id3Service上啓動。

問題是該模塊沒有聲明對正在運行的應用程序的依賴關係,或者對已啓動的actorSystem更有趣。 Guice可以決定在應用程序初始化之前啓動它。

的follwing是強制的初始化actorSystem依賴(並減少依賴的足跡)

import javax.inject.{ Singleton, Inject } 

import akka.actor.ActorSystem 
import com.google.inject.AbstractModule 

import scala.concurrent.duration._ 

class StartupConfigurationModule extends AbstractModule { 

    override def configure(): Unit = { 
    bind(classOf[Schedule]).asEagerSingleton() 
    } 

} 

@Singleton 
class Schedule @Inject() (actorSystem: ActorSystem) { 
    implicit val ec = actorSystem.dispatcher 
    actorSystem.scheduler.schedule(Duration(0, HOURS), Duration(24, HOURS))(Id3Service.start()) 
} 
object Id3Service { 
    def start(): Unit = println("started") 
} 
+0

遺憾的一種方式,我想安排此任務每24小時 –

+0

以及更新的代碼應該做的它是什麼問題? – Jean

+0

嗯,謝謝你的建議。我已經添加到conf文件play.modules.enabled + =「controllers.StartupConfigurationModule」,但無法正常工作。我得到這個錯誤CreationException:無法創建注入器,請參閱以下錯誤: 1)捕獲並報告異常。消息:沒有啓動應用程序 在com.google.inject.util.Modules $ OverrideModule.configure(Modules.java:177) –

相關問題