【发布时间】:2013-04-25 21:30:15
【问题描述】:
假设我问(?)同一个演员的两个回答。 它存储发件人以供以后使用。 稍后,它会将消息返回给发件人。我们得到了正确的发件人(散列到消息的那个),但是 Akka 是如何知道响应是针对哪条消息的呢? ActorRef 中是否有指示每个响应针对哪条消息的内容?
是“频道”吗?
我想更好地了解底层技术。 我会尝试同时阅读源代码,但我认为这是一个非常好的问题。
代码示例:
class TestActor
[...]
def onReceive = {
case r: MessageToGoOut ⇒
messageId += 1
val requestId = clientConnectionId + messageId
senders += (requestId -> sender) //store sender for later
anotherActor ! WrappedUpMessage(requestId, MessageOut))
case m: MessageToGoBackToSender ⇒
val requestId = m.requestId
senders.get(requestId) map { client ⇒
client ! Response(m.message)
senders -= requestId
}
}
val futures = for(i <- 1 to 100) yield testActor ? new MessageToGoOut ("HEYO!" + i)
现在,akka 如何确保消息返回到正确的参与者??
【问题讨论】: