如果我发送相同的消息,告诉和转发有什么区别:
case msg: Message =>
otherActor tell (msg,sender)
Run Code Online (Sandbox Code Playgroud)
和
case msg: Message =>
otherActor forward msg
Run Code Online (Sandbox Code Playgroud)
Kon*_*ski 107
的sender()将是在接收端的不同.
使用tell(也称为!)发送消息:
A 告诉消息M来B.
B 告诉那条消息C.
C认为sender()消息M是B.
消息使用转发发送:
A 告诉消息M来B.将该消息
B 转发给C.
C认为sender()消息M是A.
值得指出的是,你可以实现与forward使用明确设置消息发送者时相同的功能tell,但这不是典型的Akka风格:
// inside `B`, when received `msg` from `A`
C tell (msg, A)
==
C forward msg
Run Code Online (Sandbox Code Playgroud)