Play 2.0(Javaを使用)フレームワークアプリケーションでakkaのスケジューラーを使用して、特定の日時に電子メールリマインダーを送信したいと思います。Play2.0は初めてです。誰かが(詳細に)知っているなら、play 2.0フレームワークでakkaスケジューラーを使用する手順を教えてください?前もって感謝します。
質問する
2916 次
2 に答える
3
私も新しいですが、ScalaのAkkaに関連する別の質問があります。しかし、読んでいるうちに、これがあなたに役立つかもしれないことがわかりました:http ://www.playframework.org/documentation/2.0/JavaAkkaそしておそらくこれも:https ://github.com/playframework/Play20/wiki/JavaAsync
于 2012-04-12T09:50:27.280 に答える
0
モジュールクラス
import com.google.inject.AbstractModule
import play.api.libs.concurrent.AkkaGuiceSupport
class JobModule extends AbstractModule with AkkaGuiceSupport {
def configure() = {
bindActor[JobBucket]("job-bucket-actor")
bind(classOf[Scheduler]).asEagerSingleton()
}
}
スケジューラクラス
import javax.inject._
import akka.actor._
import scala.concurrent.ExecutionContext
import scala.concurrent.duration._
class Scheduler @Inject()(val system: ActorSystem, @Named("job-bucket-actor") val jobBucketActor: ActorRef)(implicit ec: ExecutionContext) {
system.scheduler.schedule(0.microseconds, 1.day, jobBucketActor, "cleanBucket")
}
JobBucket(このクラスで複数のジョブを作成し、receiveメソッドに異なるメッセージを渡すことでそれらを呼び出すことができます。)
import javax.inject._
import akka.actor.Actor
import org.apache.commons.io.FileUtils
import play.api.Logger
// You can inject any service class or other class if it's required
@Singleton
class JobBucket extends Actor {
def receive = {
//You can place n number of cases.
case "cleanBucket" => clean()
}
def clean(): Unit = {
//Do whatever you want to do over here.
Logger.info("This task has been scheduled...!!!")
}
}
また、apllication.configファイルに次の行を追加する必要があります: play.modules.enabled + = "com.abc.xyz.JobModule"
于 2017-04-24T16:28:18.520 に答える