AKKA でペストリー プロトコルを実装しています。ここでは、トレイト PastryMessage と、このトレイトを具体的なメッセージ型として拡張するいくつかのケース クラスを定義しました。
trait PastryMessage{
val timeStamp = System.currentTimeMillis()
val destId: NodeId
}
case class Join(destId:NodeId, newbie: ActorRef) extends PastryMessage
case class RoutingTable(destId: NodeId, routingTable: Array[PastryNode]) extends PastryMessage
私の受信方法は次のようになります
def receive = {
case Join(destId, newbie)=>route(Join(destId, newbie))//and other stuff...
//...
}
2 つの質問があります。
アクターの receive メソッドで、PastryMessage の各タイプのタイムスタンプを取得するにはどうすればよいですか? どうにかして取得できる場合、すべての case 句で取得するコードを作成する必要がありますか?
受信したペストリー メッセージを他のノードにルーティングしたいのですが、受信した元のメッセージを取得するにはどうすればよいですか。Join メッセージの場合、 route(Join(destId, newbie)) は異なるタイムスタンプを持つ別の Join メッセージを作成すると思います。