加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

斯卡拉阿卡:有演员还记得它应该最终回复的东西吗?

发布时间: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”)
>如果是,请获取发件人ActorRef并将其传递给邮件发件人引用.

例如,使用一个简单的元组:

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].在前进的过程中,您会先添加发件人参考.返回时,您回复列表头并沿着回复传递列表尾部.

编辑:考虑维克多评论.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读