我正在用 AKKA 实现 Pastry 协议。在这里,我定义了一个特征 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...
//...
}
我有两个问题。
在我的actor的receive方法中,如何获取每种PastryMessage的时间戳?如果我能以某种方式得到它,我是否必须编写代码才能在每个 case 子句中得到它?
我想将收到的糕点消息路由到其他节点,如何获取收到的原始消息。对于加入消息的情况,我认为 route(Join(destId, newbie)) 将创建另一个具有不同时间戳的加入消息。