scala - Akka actor ask pattern does not work as expected -


actor b contains reference actor called senderr. actor asks actor b, waits response , prints it. not receive response. why? must print number 4 @ console doesn't.

class a(b: actorref) extends actor {    private implicit val timeout = timeout(20 seconds)    b ! 1    def receive = {     case 2 => (b ? 3).map(println)   } }  class b extends actor {    var senderr : actorref = null    def receive = {     case 1 =>       senderr = sender()       sender ! 2     case 3 =>       senderr ! 4   } }  object main extends app {   val system = actorsystem("test")   val b = system.actorof(props[b])   val = system.actorof(props(classof[a], b)) } 

ask creates temporary micro-actor single purpose of receiving 1 response of type any

when b receives 3 sends 4 senderr refers a. a not have match 4. in order (b ? 3).map(println) receive 4, b has send sender(), @ time refers temporary actor set ask:

case 3 => sender ! 4 

alternatively, have case 4 in a wouldn't need use ask


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -