Page History
...
Code Block | ||
---|---|---|
| ||
package com.example.kotlinbootlabs.module import akka.actor.typed.ActorRef import akka.actor.typed.ActorSystem import akka.actor.typed.javadsl.AskPattern import java.time.Duration import kotlinx.coroutines.future.await import kotlinx.coroutines.runBlocking object AkkaUtils { suspend fun <T, R> askActor( actor: ActorRef<T>, message: (ActorRef<R>) -> T, timeout: Duration, actorSystem: ActorSystem<*> ): R { return AskPattern.ask( actor, message, timeout, actorSystem.scheduler() ).await() } fun <T, R> runBlockingAsk( actor: ActorRef<T>, message: (ActorRef<R>) -> T, timeout: Duration, actorSystem: ActorSystem<*> ): R = runBlocking { askActor(actor, message, timeout, actorSystem) } } |
- AKKA가 Scala/JAVA만 기본으로 지원하고 Kotlin은 알아서 호환해야하다보니, 자바코드에서 오는 괴리감을 이 유틸 클래스가 처리해주는것으로