Akka 2.1 文档建议使用 reliable proxy pattern进行有保证的消息传递,即消息传递一次且仅一次到收件人队列。为了确保消息不会在 JVM 崩溃的情况下丢失,我相信消息存储在持久队列中。
基本思想是,要将消息 M 从 actor A 发送到 B,它将 M 发送到两个代理 actor P 和 E,其中 P 在 A 端,E 在 B 端。参见 this image for detail
actor P 和 E 是否需要自己的持久化队列?从A发送到B的消息在持久化到B之前会先持久化到P的队列和E的队列中?
最佳答案
该模式本身不关心持久消息队列:它只是旨在使远程交付与本地交付一样可靠(在易出错网络强加的不可靠性限制内)。因此,当 JVM 崩溃时,消息将丢失。
这些参与者(P 和 E)不能很好地使用持久邮箱,因为 P 在内部存储消息,即不是持久的。这样做会将他们从邮箱中取出。您需要调整模式,让 P 保留其内部队列。
关于proxy - 当使用可靠代理模式进行有保证的消息传递时,Akka 会保留多少次消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613931/