Akkaでは、RPCスタイルのプログラミングモデルを使用する「型付きアクター」APIを使用する以外に、アクターへのメッセージを特定の静的タイプに制限する方法はありますか?
アクターの境界で静的型の安全性を捨てることなく、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
など)を許可するような構造を持たなければならないでしょう。