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

时间:2015-12-04 03:01:02

标签: akka.net

所有

是否可以在数据库中存储akka.net actor收件箱邮件? 如果主机与akka.net系统崩溃会发生什么?

1 个答案:

答案 0 :(得分:6)

持久消息只是更大问题的一部分,即可靠的消息处理。简而言之,目标不仅是保留消息,而且通常是为了保证消息已被接收并正确处理。默认情况下,Akka.NET使用最多一次交付语义,这意味着,使用尽力而为的政治处理消息。这允许保持高吞吐量并使演员行为远离幂等。但是,有时我们需要更高的可靠性来处理某些消息。

其中一种技术是在actor系统前使用另一个可靠的队列(例如RabbitMQ或Azure Service Bus),并将其用于可靠的消息传递。

其他解决方案是使用Akka.Persistence库中的AtLeastOnceDeliverySemantic个actor。在这里,您可以指定负责重新发送和确认已处理消息的actor。从那里你可以决定使用构建到Akka.Persistence本身的eventsourcing原语来持久传入消息。在这种情况下,持久性后端是可插入的。