yukarıda bazı örneklerini Play eşzamanlılık ile nasıl başa çıkılacağı konusunda birkaç öğreticiler okumak ve buldum:eşzamanlılık 2.1 veya
Asenkron İşi
import scala.concurrent.{ExecutionContext, future}
def sendEmailAsync(from: String, to: String, subject: String, body: String) = {
import ExecutionContext.Implicits.global // in scala.concurrent
future {
EmailHelper.sendEmail(from, to, subject, body)
}
}
Programlı İşe
import play.api.libs.concurrent.{Akka, Execution}
def sendEmailOnSchedule(from: String, to: String, subject: String, body: String) = {
import scala.concurrent.duration._
import Execution.Implicits.defaultContext // in play.api.libs.concurrent
Akka.system.scheduler.scheduleOnce(10 seconds) {
EmailHelper.sendEmail(from, to, subject, body)
}
}
Biraz kafam karıştı ... İlk örnekte scala.concurrent.ExecutionContext.Implicits.global
kullanılıyor. ikinci örnekte play.api.libs.concurrent.Execution.Implicits.defaultContext
kullanılır. Niye ya? Birisi bana olayın arkasında neler olduğunu anlatabilir mi?
"ExecutingContext" java'nın ExecutorService (Thread Pool) gibi bir şeydi, isterseniz kendiniz bile oluşturabilirsiniz. Örneğin, play-slick modülü yürütme db işlemlerine ayrılmış bir bağlam kullanır. https://github.com/freekh/play-slick/blob/master/src/main/scala/play/api/db/slick/SlickExecutionContext.scala – jilen