Akka消息订单

时间:2018-04-19 06:54:57

标签: java scala akka actor

根据Akka文档(Message Delivery Reliability - General Rules),为给定的发送者 - 接收者对保留了消息顺序。 ActorRef.tell(Object msg, ActorRef sender)方法允许将另一个actor设置为消息的发送者。所以我的问题是: 谁是发送者 - 接收者对中的发送者,如果ActorRef.tell的发送者未设置为self()而是设置为另一个参与者的ActorRef,则保留订单?

如果某些代码(未在actor的上下文中运行(例如,接口线程))通过ActorRef.tell向actor发送消息并将发件人设置为{{},则应用哪种消息顺序保证? 1}}或任何其他ActorRef.noSender()

1 个答案:

答案 0 :(得分:1)

您可以将sender视为发送线程,而不是发件人ActorRef,因此无论您作为发件人ActorRef传递的是什么,邮件都会按照您的顺序放置在收件箱中在该线程中调用tell。执行tell的其他线程可以通过线程的tell调用以任何方式夹在中间,因此这是sender -> receiver排序保证所引用的内容。