我想了解如何在操作中使用有狀態的演員時處理異步調用。如何確保在Akka中使用期貨時的消息一致性
考慮下面的演員:
@Singleton
class MyActor @Inject()() extends Actor with LazyLogging {
import context.dispatcher
override def receive: Receive = {
case Test(id: String) =>
Future { logger.debug(s"id [$id]") }
}
}
和調用該演員:
Stream.range(1, 100).foreach { i =>
MyActor ! Test(i.toString)
}
這會給我的一系列不一致的印刷。
我該如何在演員中使用未來,而不會丟失整個「一個接一個」的功能?
如果你在'Future'部分前面加上'println(s「received $ id)'',你應該看到id以正確的順序到達,對吧? – mfirry