6

Akka Actor 是否可以将其传出消息存储在本地持久发件箱中,直到其远程接收者 Actor 准备好在其自己的持久收件箱中接收它们?换句话说,我可以使用 Akka 执行类似于电子邮件的存储转发式消息传递吗?

4

3 回答 3

6

您可以使用Eventsourced的可靠渠道来做到这一点。Eventsourced 是 Akka 的事件溯源库。

于 2013-03-06T11:22:20.987 回答
3

我赞同 Martin 的回答:Akka 演员旨在形成可以构建更复杂事物的基本构建块,而 Martin 的库就是一个很好的例子。在“基础”中提供越来越多的功能是我们几年前尝试并恢复的,而是保持精简和专注。

于 2013-03-07T08:14:00.563 回答
2

您可以通过添加某种消息持久性来采用 Akka 可靠代理模式 ( http://doc.akka.io/docs/akka/snapshot/contrib/reliable-proxy.html )。

此外,您可以创建自己的持久邮箱,它可以通过添加消息状态、时间戳和目标参与者类型将消息持久化到数据库(它也可以解决可调整大小路由器的路由的持久邮箱问题)。您也可以将此存储用于您的可靠代理(也使用时间戳和目标参与者类型)。在这种情况下,您可以通过相同类型的活动参与者从死集群节点恢复超时消息。

我们在项目中使用了这种机制,我们的 Durable Mailboxes 也支持确认模式,我们可以恢复处理期间超时的消息(如果在处理消息期间有一个 actor 死亡)。只是不要忘记 maxFailures (在确认模式的情况下)并且不要保留 PoisonPill / Kill 消息。

于 2013-03-07T13:36:53.867 回答