在Akka中,除了使用使用 RPC 样式编程模型的“Typed Actor”API 之外,是否有办法将发送给 Actor 的消息限制为特定的静态类型?
我可以在 Akka 中使用消息传递样式而不丢弃演员边界处的静态类型安全性吗?
例如,我想使用这样的代码:
sealed abstract class FooMessage
case object Foo extends FooMessage
case object Bar extends FooMessage
class FooActor extends Actor[FooMessage] {
def receive = {
case Foo => () // OK
// Would raise a compiler error:
// case s: String => error("Can't happen, String is not a subtype of FooMessage")
}
}
val fooActor = actorOf[FooActor]
fooActor ! Foo // OK
// Won't compile:
fooActor ! "Hello"
也许必须扩展一些基本特征或具有Either
允许系统级消息(Exit
等)的构造。