斯卡拉阿卡:有演员还记得它应该最终回复的东西吗?
发布时间:2020-12-16 18:10:56 所属栏目:安全 来源:网络整理
导读:在akka中,假设有一个线性的参与者链,每个参与者从上游接收消息,向下游发送自己的消息并等待回复,然后向上游发送消息.演员如何在以后必须回复该演员时才能记住上游演员的句柄? 例如: A sends message to B (b ! "msg1")B sends message to C (c ! "msg2")C
在akka中,假设有一个线性的参与者链,每个参与者从上游接收消息,向下游发送自己的消息并等待回复,然后向上游发送消息.演员如何在以后必须回复该演员时才能记住上游演员的句柄?
例如: A sends message to B (b ! "msg1") B sends message to C (c ! "msg2") C replies to B (self.reply ! "msg3") B replies to A <--- ??? 基本上,B怎么能记住A的句柄?在这一点上做self.reply会引用C,因为C将当前消息发送给B. 解决方法
演员B必须改变C和A之间的回复消息吗?
>如果不是,演员B应该使用B前进“msg”而不是B! “味精”.这将保留发件人信息.当C使用回复时,答案会自动发送到A而不经过B: 向B发送消息(b!“msg”) B将消息转发给C(c转发“msg”) C回复A(self.reply!“msg3”) 例如,使用一个简单的元组: A sends message to B (b ! "msg1") B sends message to C,with the sender reference (c ! ("msg2",self.sender) ) C replies to B adding the reference it received (self.reply ! ("msg3",ref) ) B replies to A ( ref ! "msg4" ) 在这里我使用了一个元组,但是如果你有一个更长的链,则传递一个List [ActorRef].在前进的过程中,您会先添加发件人参考.返回时,您回复列表头并沿着回复传递列表尾部. 编辑:考虑维克多评论. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |