3

Akka 2.1 文档建议使用可靠代理模式来保证消息传递,即消息被传递一次且仅一次到接收者队列。为了确保消息在 JVM 崩溃的情况下不会丢失,我相信消息存储在持久队列中。

其基本思想是,要从actor A 向B 发送消息M,它将M 发送到两个代理actor P 和E,其中P 在A 侧,E 在B 侧。有关详细信息,请参阅此图像

演员 P 和 E 是否需要自己的持久队列?从 A 发送到 B 的消息在被持久化到 B 之前会被持久化在 P 的队列和 E 的队列中吗?

4

1 回答 1

3

该模式本身不关心持久消息队列:它只是旨在使远程传递与本地传递一样可靠(在易出错的网络施加的不可靠性约束内)。因此,当 JVM 崩溃时,消息将丢失。

这些参与者(P 和 E)不能很好地使用持久邮箱,因为 P 将消息存储在内部,即不持久。这样做会将他们从邮箱中取出。您需要调整模式以让 P 保留其内部队列。

于 2013-02-01T10:10:22.640 回答