akka.net - 如何为 akka.net 启用消息持久性

标签 akka.net

全部

是否可以将 akka.net Actor 收件箱消息存储在数据库中? 如果使用 akka.net 系统的主机崩溃会发生什么?

最佳答案

持久化消息只是更大问题的一部分,即可靠的消息处理。简而言之,目标不仅是持久化消息,而且通常是保证消息已被接收并正确处理。默认情况下,Akka.NET 使用最多一次传递语义,这意味着消息是使用尽力而为策略来处理的。这可以保持高吞吐量并使参与者的行为远离幂等。然而有时我们需要某些消息具有更高的可靠性。

其中一项技术是在 Actor 系统前面使用另一个可靠的队列(例如 RabbitMQ 或 Azure 服务总线),并将其用于可靠的消息传递。

其他解决方案是使用 AtLeastOnceDeliverySemantic来自 Akka.Persistence 库的 Actor 。在这里您可以指定负责重新发送和确认已处理消息的参与者。从那里,您可以决定使用 Akka.Persistence 本身内置的事件源原语来持久保存传入消息。在这种情况下,持久性后端是可插入的。

关于akka.net - 如何为 akka.net 启用消息持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34080188/

相关文章:

c# - ActorSelection 的 Akka.net 死锁问题

c# - 如何将 ClusterRouterPool 从 C# 转换为 HOCON 配置?

c# - 从函数中调用 Akka.Net Actor 并返回 Acknowledgment

c# - 如何检测远程参与者断开连接(分离)?

f# - 如何使用 F# 在 Akka.Remote 中发送带有元组的消息?

f# - F# Akka.NET 中的 System.create 错误

c# - 使用 ConsistentHashmapping 时如何在运行时将参与者添加到 akka.net 中的组或池中?

c# - 在单独的进程中部署 Akka.net 参与者

akka.net - 我的 Akka.Net 演示非常慢

akka.net 循环组路由器 - 只路由到一个路由