1

我想在我的 play 2.0(使用 java)框架应用程序中使用 akka 的调度程序来在特定日期和时间发送电子邮件提醒。我是 play 2.0 的新手。如果有人知道(详细),请告诉我在 play 2.0 框架中使用 akka 调度程序的过程?提前致谢。

4

2 回答 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(您可以在此类中创建多个作业,并通过将不同的消息传递给接收方法来调用它们。)

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...!!!")
  }
}

您还需要在 aplication.config 文件中添加一行: play.modules.enabled += "com.abc.xyz.JobModule"

于 2017-04-24T16:28:18.520 回答