AKKA.NET with Asp.net web api
本文关键字:web api net Asp NET with AKKA | 更新日期: 2023-09-27 18:09:34
我们计划使用AKKA开发一个审计服务web api。网
API将接收审计日志数据,并生成一个审计参与者,该参与者将执行一些安全检查,将数据插入到数据库中,并在发生任何重大安全漏洞时发送电子邮件通知。我们的计划是使用TELL方法在即发即忘机制中进行处理。API将始终返回200 OK,以便调用服务不受影响。
当我们做了一些研究,我们发现大多数帖子建议创建一个静态实例ActorSystem在全局。因此,我们找到了创建actor的两种方法
- 生成一个actor[具有唯一名称],在API内部,为每个调用初始化actor的新实例并调用Tell方法
- 为Actor创建一个单个静态实例,并调用Tell方法
我们觉得方法2是利用AKKA.NET的最好方法。我们在正确的道路上吗?
在这种情况下,我通常会选择选项1。你需要考虑如何处理失败。我可能会创建某种监督参与者来处理每次收到命令时的这个过程。然后,主管可以创建并监督(即确定如何处理故障)两个参与者——一个用于保存到DB,另一个用于发送电子邮件。主管将负责管理该过程,并在完成后杀死自己(和孩子)。
如果您选择第二个选项,您将为所有消息提供一个队列,因此您将遇到缩放问题。你可以通过使用actor池来解决这个问题,但我认为处理重试和失败会更加困难,特别是当你需要知道哪些东西已经保存但没有发送电子邮件时。您可能仍然可以让它工作,特别是如果您不关心保存-然后发送电子邮件过程是否完全完成,但我只是认为第一个选项更适合Actor模型。