What is a difference between tell and forward, in case I will send the same message:
case msg: Message => otherActor tell (msg,sender)
and
case msg: Message => otherActor forward msg
Actors communicate using asynchronous messages. This ensures that the sender does not stick around waiting for their message to be processed by the recipient. Instead, the sender puts the message in the recipient's mailbox and is free to do other work.
Companion object ActorSystem An actor system is a hierarchical group of actors which share common configuration, e.g. dispatchers, deployments, remote capabilities and addresses. It is also the entry point for creating or looking up actors. There are several possibilities for creating actors (see akka.
Behind the scenes Akka will run sets of actors on sets of real threads, where typically many actors share one thread, and subsequent invocations of one actor may end up being processed on different threads.
The sender()
will be different on the receiving end.
Message sends using tell (also known as !
):
A
tells message M
to B
. B
tells that message to C
. C
thinks the sender()
of message M
is B
.
Message sends using forward:
A
tells message M
to B
. B
forwards that message to C
.C
thinks the sender()
of message M
is A
.
Worth pointing out is, that you can achieve the same as forward
when explicitly setting the sender of a message using tell
, however this is not typical Akka-style:
// inside `B`, when received `msg` from `A` C tell (msg, A) == C forward msg
For more info refer to the docs about forward.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With