Akka演员是否可以将其外播消息存储在本地durable outbox中,直到其远程接收器演员准备好在其自己的持久收件箱中接收它们为止?换句话说,我可以使用Akka来执行类似于电子邮件的store-and-forward样式消息传递吗?
答案 0 :(得分:4)
您可以使用reliable channels Eventsourced来完成此操作。 Eventsourced是Akka的活动采购库。
答案 1 :(得分:2)
我是第二个马丁的答案:Akka演员的目的是形成可以构建更复杂事物的基本构件,而Martin的图书馆就是一个很好的例子。在“基础”中提供越来越多的功能是我们几年前尝试并恢复的,而不是保持精益和专注。
答案 2 :(得分:1)
您可以通过向其添加某种消息持久性来采用Akka Reliable Proxy模式(http://doc.akka.io/docs/akka/snapshot/contrib/reliable-proxy.html)。
此外,您可以创建自己的Durable Mailbox,它可以通过添加消息状态,时间戳和目标actor类型将消息持久保存到DB(它还可以解决可调整路由器的路由器的Durable Mailboxes问题)。您也可以将此存储用于可靠代理(也使用时间戳和TARGET actor类型)。在这种情况下,您可以通过相同类型的活动actor从死群集节点恢复超时消息。
我们在项目中使用这样的机制,我们的Durable Mailboxes也支持确认模式,我们可以恢复在处理过程中超时的消息(如果演员在处理消息时死亡)。只是不要忘记maxFailures(如果是确认模式)并且不要持久存在PoisonPill / Kill消息。