问题标签 [akka.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1822 浏览

c# - 在单独的进程中部署 Akka.net Actor

我开始学习 Actor 模型(使用 Akka.net)并计划在当前项目中使用它。我当前的任务是使用 IFilter 从不同文件中提取文本。IFilter 是一组带有本机代码的 COM 服务器。有时它可能会挂起或处理进度过长。在这种情况下,我需要中止对问题文件的处理,并继续处理队列中的下一个文件。但是我需要终止整个过程才能正确清理本机代码。

另一个问题是生产力——在大多数情况下,我无法在单个进程中使用多个线程加载多个内核。我怀疑 IFilter 里面有锁。但是如果我运行我的测试应用程序的多个副本(它模拟多进程模式),我可以使用 CPU 的全部功能。

我的问题是:如何在不同的进程中部署一些参与者

我发现可以通过这种方式在配置中指定参与者的部署策略(来自 Petabrige 讲座的示例):

其他选项包括:

  • 单线程调度程序
  • 线程池调度程序
  • ForkJoinDispatcher

但是我在这里找不到在单独过程中进行部署的选项。

我该如何解决这个问题?

0 投票
2 回答
309 浏览

akka.net - AKKA.NET 中的验证

我有一个名为OrderActor的演员,它是为客户创建的订单。我有一条验证规则,上面写着If the Product is a computer, allow only one item。每当 OrderActor 收到添加产品的消息时,都应应用此规则。

我的问题是关于验证。我是否应该有一个名为OrderValidatorActor的新角色,并且需要将OrderActor作为父角色?在这种情况下,事件流应该是OrderActorOrderValidatorActor发送消息,OrderValidatorActor 在验证后将响应发送回OrderActor

请指导如何处理验证?

0 投票
2 回答
2669 浏览

akka.net - 在 AKKA.NET 中查询

我试图在使用 AKKA.NET 构建的目录管理应用程序中了解 CQRS 的查询端。我有一个 UI 需要在遵循标准的网格中显示所有产品。标准可以是来自供应商 A 的所有产品,并且该标准在 UI 上的表单中输入。

我的问题是这个查询是如何完成的?我应该去哪里运行查询?我应该将所有产品参与者加载到内存中以进行查询吗?或者我应该去保存状态的持久媒体?在我获得所有查询成功的产品 id 后,我应该使用这些产品 id 来激活所有参与者吗?

请指教。

0 投票
1 回答
651 浏览

persistence - 启动时如何从数据库中预热演员的状态?

我的要求是启动一个长时间运行的过程来标记所有过期的产品。这在每晚凌晨 1:00 运行。客户可能正在访问网站上的某些产品,因此他们在作业运行时有实例。其他人在持久媒体中,还没有实例,因为客户没有访问它们。

我应该在哪里连接逻辑以从持久媒体读取演员的最新状态并创建一个全新的演员?我应该在Prestart覆盖方法中调用吗?如果是这样,我如何告诉ProductActor正在创建一个新的 Actor。

或者我应该向像LoadMeFromAzureTable这样的ProductActor发送消息,该消息将在创建 Actor 后从持久媒体加载状态?

0 投票
1 回答
232 浏览

akka.net - Akka.NET TestKit 同步行为

我有以下 C# 代码来测试 AKKA.NET 演员的行为。该语句productActor.Tell(new ChangeActiveStatus(true));预计将是一个阻塞调用(TestKit 根据此博客将其设为同步调用),但我看到它立即返回。结果,第二次测试失败,尽管 ActiveStatus 稍后会更改。

****** 更新 *****

以下带有 Thread.Sleep(10000) 的代码成功:

0 投票
1 回答
1244 浏览

akka.net - AKKA.NET 和 DeathWatchNotification

当ProductActor尝试告诉ValidatorActor验证消息时,我收到以下消息。虽然我看到了这条消息,但我得到了预期的结果。

我没有尝试从ProductActor向自身发送消息。为什么我仍然收到以下消息?

- 更新 -

两位演员如下:

这是检查状态的测试:

0 投票
1 回答
395 浏览

akka - 通过 AKKA 中的工人演员检索国家演员

我有三个演员来处理 CQRS 场景。ProductWorkerActor处理命令部分,ProductQueryWorkerActor处理查询部分,ProductStateActor处理状态部分。

我处理查询的方式是使用:

ProductQueryWorkerActor 的代码:

请忽略用于访问产品状态的路径。它是硬编码的,有意使代码阅读更简单。

  1. 我应该像在这种情况下使用的那样使用Ask来检索产品的状态吗?Ask 叫 Futures 吗?

  2. 我应该将状态作为 DTO 暴露给外部工作而不是演员本身吗?

  3. 要更改产品的任何状态,我应该在ProductWorkerActor中还是在ProductStateActor本身中处理消息?在第二种情况下,ProductWorkerActor向ProductStateWorker发送一条消息,ProductStateWorker处理该消息,更改状态并向ProductWorkerActor发送另一条消息,它通过验证并更改了状态。

0 投票
1 回答
4060 浏览

azure - AKKA 是否尝试在内存中执行与 Azure 服务总线队列在磁盘上执行的操作相同的操作?

像 AKKA.net 这样的参与者模型带来了许多好处,例如可伸缩性、反应性、内存缓存等......当我尝试将 AKKA 与Azure 服务总线队列进行比较时,我看到了几乎相同的主要好处Azure 服务总线,内存缓存的好处除外。

在生产环境中,AKKA 需要多个具有更多内存、处理能力的 VM 来处理内存中的数百万演员。对于 Azure 服务总线队列,不需要强大的主机。即使我们使用 Actor 模型,也不需要进行监督或创建 Actor 系统来管理数百万个 Actor。Azure 服务总线的可伸缩性是自动的。

从长远来看,我认为 Azure 服务总线队列具有成本效益。随着负载的增加,不需要 IT 管理员来管理它。也不需要具有多核的强大系统。

AKKA 参与者模型是否适合具有多核系统的本地数据中心,而不适合在考虑成本效益时可以使用 Azure 服务的应用程序?

0 投票
1 回答
1196 浏览

persistence - AKKA.NET 期刊和快照存储

由于我没有看到任何使用AKKA.NET Journals 和 Snapshot store的示例,我假设我必须使用这两种类型的 actor 来实现 Event Store 和 CQRS。

  1. 快照存储是否应该在每次参与者状态更改时更新,或者应该设置为每 10 秒的计划更新?

  2. Snapshot 存储 Actor 是否应该只与 Journal Actor 对话,所以拥有 state 的 Actor 不应该同时与 Journals 和 Snapshot 对话?我在考虑SOC。

  3. 假设我必须关闭服务器并备份。用户尝试通过 Web UI 访问产品(如计算机)。那个时候,产品actor在actor系统中是不存在的。要检索产品的状态,我不应该去快照存储而不是运行所有日志来重新创建状态吗?

0 投票
1 回答
342 浏览

akka - 如何在没有 ActorSelection 的情况下从 AKKA 的深层图中获取演员?

这篇博客讨论了少用ActorSelection来选择演员。

我有一个拥有 10000 个产品参与者的CatalogActorSystem 。所有这些演员都有名字,这实际上是他们的身份。如果我需要访问具有 id 的产品,例如Product_5000并且不应该使用 ActorSelection,我必须在像CatalogActorsCache这样的角色中拥有一个产品角色的集合(用字典或 ICollection 实现) ,并且必须将它们全部迭代到找到合适的。

我不应该使用 ActorSelection 来定位正确的产品,而不是我的任何搜索算法,或者使用带有键作为产品 id的字典吗?