在使用可靠的代理模式执行有保证的消息缓解时,Akka 会保留消息多少次



Akka 2.1 文档建议使用可靠的代理模式来执行有保证的消息解除,即消息传递一次,并且只传递一次到收件人队列。为了确保消息在 JVM 崩溃时不会丢失,我相信消息存储在持久队列中。

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

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

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

这些执行组件(P 和 E)不能很好地与持久邮箱配合使用,因为 P 在内部(即不是持久)存储邮件。它会将它们从邮箱中取出以执行此操作。您需要调整模式以使 P 保留其内部队列。

最新更新