gpt4 book ai didi

scala - 如果消息不可靠,Akka 消息如何排序?

转载 作者:行者123 更新时间:2023-12-02 10:50:27 26 4
gpt4 key购买 nike

我读到,Akka 消息在任意两个 Actor A 和 B 之间是有序的,如果 A 按 1、2、3、4 的顺序发送消息,那么它们必须按该顺序到达。

我还了解到 Akka 消息不可靠。

这两件事怎么可能是真的呢?如果消息到达 1,然后到达 4,然后到达 3,但 2 从未发送,那么会发生什么?

http://doc.akka.io/docs/akka/snapshot/general/message-delivery-reliability.html

<小时/>

澄清一下,消息 1、2、3 和 4 是否存在并且是从参与者 A 按该顺序发送的。

让我们考虑一下 a)、b)、c) d) 点。

a) 在参与者 B 处,消息 1 到达。

b) 然后,消息 4 到达参与者 B。

c) 然后,消息 3 到达参与者 B。

d) 消息 2 丢失。

在 a 点,我发现没有问题,参与者 B 处理了消息。

在 b) 点我看到一个问题,actor B 如何处理这个消息 4,因为消息排序规则,actor B 正在等待消息 2 到达。所以我猜此时参与者 B 无法处理消息 4,因为消息 4 无法在消息 2 之前处理。

在 c) 点,消息 3 已到达,但由于排序原因,我们无法在没有消息 2 的情况下处理消息 3。

在点 d) 消息 2 已丢失。

因此,如果我按照我理解的方式应用规则,参与者 B 将仅处理消息 1,而不会处理消息 3 和 4。我的逻辑正确吗?我在这里做出了错误的假设吗?假设消息可以以任何顺序到达参与者 B。但是,如果两个 Actor 都在网上的话,不应该是这样吗?如果消息是一劳永逸的?

最佳答案

正如文档所述,如果参与者 A1 向参与者 发送消息 M1M2M3 >A2,这些消息将按照相对于从 A1 发送到 A2 的消息的顺序传递。如果 A3 也向 A2 发送消息,则无法保证来自 A1A3 的消息将如何发送交错。来自 A3 的消息可能会到达来自 A1 的两条消息之间。来自 A1 的消息相对于来自 A1 的其他消息仍然按顺序排列。

因此,在您的示例中,保证 (1, 4, 3) 不会发生。 (1, 3, 4) 是有效的,因为任何消息都可以被丢弃,但如果 3 被传递,则保证在 4 之前传递。

关于scala - 如果消息不可靠,Akka 消息如何排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23100049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com