Akka Gotchas when dealing with Futures -
consider following code bit:
def receive = { case computeresult(itemid: long) => //val originalsender = sender computeresult(itemid).map { result => originalsender ! result } }
the computeresult results in future, how introduction of val prevent sending result wrong sender? let have different senders (sender1 , sender2).
sender1 first sends message followed sender2. without val in method above, see there possibility sender2 result meant sender1.
what don't how introduction of val prevent me scenario described?
sender
function (that's why convention akka 2.3 onwards write sender()
). binding value originalsender
, can close on immutable value , know won't change, if message comes in before future completeresult
completes.
because receive
function, every invocation result in new local value called originalsender
.
Comments
Post a Comment