Scala Actor:在同一流程中,从一个参与者传递到另一个参与者的消息是否总是按原始顺序处理



Scala Actor:在同一流程中,从一个参与者传递到另一个参与者的消息是否总是按照发送时的原始顺序处理?

是的。对于两个演员来说,这个条件确实成立。

保证消息是为给定的一对发送方排序的以及接收器演员。如果参与者A在其中发送消息X和Y顺序,参与者B将不会收到消息,只有消息X,只有消息Y或消息X,后面跟着消息Y。

学习scala中的并发编程,第270页

Akka保证消息的接收顺序与发送的顺序相同,假设消息已送达,但不保证消息送达。akka文件对此非常清楚,如下所示:

"对于给定的一对参与者,从第一个直接发送到第二个的消息不会被无序接收"

此外,虽然通过中间参与者发送的消息通常不能保证以相同的顺序传递到最终目标参与者,但当在单个JVM的上下文中运行时,这种限制"在某些条件下被消除"。当你特别询问进程中的消息传递时,这可能与你有关,尽管文档建议不要依赖这种行为。

Akka文件中有一些示例和进一步的说明:http://doc.akka.io/docs/akka/snapshot/general/message-delivery-reliability.html#The_Rules_for_In-JVM_Local_Message_结束

相关内容

最新更新