在Akka中,除了使用使用RPC样式编程模型的"Typed Actor"API之外,有没有办法将actor限制为特定的静态类型?
我可以在Akka中使用消息传递样式而不会在actor边界处丢弃静态类型安全吗?
例如,我想使用这样的代码:
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"
Run Code Online (Sandbox Code Playgroud)
也许人们必须扩展一些基本特征或者具有Either允许系统级消息(Exit等等)的构造.
有没有标准化的方式来形式化我的scala/akka演员api?Imho,我需要了解实现以了解要发送的内容并不是一个好的选择.此外,如果实现已更改并且我的消息不再有效(不调用我认为它调用的操作),我不会收到任何警告或错误.