Я настроил диспетчер для операций блокировки, которые будет выполнять мое приложение, как показано ниже:
engine {
blocking-io-dispatcher {
type = Dispatcher
executor = "thread-pool-executor"
thread-pool-executor {
fixed-pool-size = 3
}
throughput = 1
}
}
Однако в журналах видно, что каждые 5 секунд более 3 потоков обрабатывают запросы (потоки 6,16,5,7,15)
Выход на консоль:
Система-engine.blocking-IO-диспетчерская-6
Система-engine.blocking-ю-диспетчерская-16
Система-engine.blocking-ю-диспетчерская-5
Система-engine.blocking-ю-диспетчерская-7
Система-engine.blocking-ю-диспетчерская-15
Пожалуйста, найдите код ниже:
import akka.actor.Actor
import akka.actor.ActorSystem
import akka.actor.Props
import java.util.Date
import akka.routing.RoundRobinRouter
import akka.routing.DefaultResizer
class SendPushNotificationActor extends Actor {
def receive = {
case SendPushNotificationMessage(message) => {
println(Thread.currentThread().getName)
// Simulate blocking operation which takes 5 seconds to send the push notification message
Thread.sleep(5000)
}
}
}
object SendPushNotificationTest {
def main(args: Array[String]): Unit = {
val system = ActorSystem("system")
val sendPushNotificationActor = system.actorOf(Props[SendPushNotificationActor].withDispatcher("engine.blocking-io-dispatcher")
.withRouter(RoundRobinRouter(nrOfInstances = 5)))
for (i <- 1.to(100)) {
sendPushNotificationActor ! SendPushNotificationMessage("Push Notification Message")
}
}
}
case class SendPushNotificationMessage(message: String)
Буду признателен за любую помощь, чтобы узнать, как исправить бассейн.