问题标签 [akka.net-persistence]

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 回答
182 浏览

akka.net - akka.cluster 和持久性交付问题

在我们的集群中,我们有四个节点组成:

  • 2 个种子节点(后端)
  • 1 名工人
  • 1 个 IIS 上的 webapi

集群已加入、启动并运行;当我向 webapi 发送 POST 时,:

  • IIS 加入集群
  • API 接收帖子并使用 Tell 发送消息
  • 消息被处理了两三次!
  • 仅发生在 IIS 加入时发送的消息,以下消息工作正常

这是我的 IIS 配置:

这是我的后端配置:

我认为问题与 akka 持久性有关,问题可能是什么?

0 投票
1 回答
214 浏览

c# - 更新到 1.3.1.0 后的 Akka.Persistence 问题

一切都很好....然后我决定将 AKKA.NET 更新到 1.3.1.0...

遇到了很多问题,并解决了它们,但是我似乎无法找到最后一个问题的解决方案(我希望如此)。错误信息:

---> System.Reflection.TargetInvocationException:调用的目标已抛出异常。---> System.MissingMethodException:找不到方法:'Void Akka.Persistence.Sql.Common.Snapshot.QueryConfiguration..ctor(System.String,System.String,System.String,System.String,System.String,System .String,System.String,System.TimeSpan)'。在 Akka.Persistence.SqlServer.Snapshot.SqlServerSnapshotStore..ctor(配置配置)

请帮忙。完整的日志如下(将IP替换为XX):

0 投票
1 回答
157 浏览

akka.net - 使用 Akka.Persistence.TestKit 测试 ReceiverActor 和 ReceivePersistentActor 的问题

网络用户,

现在我正在开发一个应用程序,它使用从 ReceiveActor 继承的 Actor 和从 ReceivePersistentActor 继承的 Actor。

我正在使用 Akka.Net、Akka.Persistence、Akka.TestKit 版本 1.3.1 和 Akka.Persistence.TestKit 版本 1.2.3.43-beta。

现在我用 NUnit 为 ReceiveActor 编写了一个测试类,Akka.TestKit.NUnit 运行良好。但是我们也使用了 ReceivePersistentActors,而且 Akka.TestKit 中显然不支持它们。

有 Akka.Persistence.TestKit 旨在支持 Akka.Net 版本 1.2.x,并且还具有与 xunit 相关的依赖项(如果可能,我不会使用它)

所以,我的问题是:

  • 是否在某处使用相同的设置,混合了 ReceiveActors 和 ReceivePersistentActors,您如何测试您的应用程序?
  • 有时 ReceiveActor 具有 ReceivePersistentActor 类型的子代,反之亦然。这是一个坏主意吗?

谢谢你的帮助!

0 投票
2 回答
721 浏览

c# - 如何测试 akka.net 持久演员

我正在使用 [Akka.Net 1.3.1] ReceiveActors 和 ReceivePersistentActors 的组合,现在我想为我的 actorsystem 编写测试。

MyPersistentActor 继承自 ReceivePersistentActor,MyActor 继承自 ReceiveActor。

我还使用版本 1.3.1 安装了 Akka.TestKit。

但似乎只有 ReceiveActors 可以被 Akka.TestKit 测试。 IActorRef myActorRef = this.Sys.ActorOf<MyActor>(); // is fine IActorRef myPersistentActorRef = this.Sys.ActorOf<MyPersistentActor>(); // is a problem

我还找到了 nuget 包 Akka.Persistence.TestKit 版本 1.2.3.43-beta 。测试版自三个月以来没有更改,仅支持 akka 1.2.2 。它还在开发中还是已经死了。我找不到任何关于此的信息。

你如何测试你的持久演员?

谢谢你的帮助!

里奇

0 投票
1 回答
401 浏览

c# - 我可以在 Akka.NET 中保存整个 Actor 系统的状态吗?

我一直在阅读和研究 Akka.NET,觉得它非常适合我将要开发的一个非常基本的在线多人游戏。

我对 Akka.NET 中的 Persistence 模块特别感兴趣。我希望能够在任何时间点对我的整个 Actor 系统进行快照,并在我选择的时间恢复该快照(本质上是游戏状态的保存/加载机制)。Actor 持久性的保存和加载似乎是自动发生的,而我希望手动快照系统的当前状态并在我选择的时间恢复。

Akka.NET 持久性可能会出现这种情况吗?

0 投票
1 回答
1182 浏览

c# - 重播事件时持久性失败... System.NotSupportedException: Generic IDictionary 尚不支持

你能帮忙吗?保存一两次时效果很好。三个或更多,我得到这个:

我该如何调试呢?

0 投票
0 回答
179 浏览

deserialization - 忽略 Akka 持久性重放失败

我们正在使用具有持久性的 Akka.net(使用 PostgreSQL)并将自定义事件存储在事件存储中。在开发/测试期间,事件可能会添加到事件存储中,在将来的某个时候我希望删除/忽略。解决此问题的最佳方法是什么?我知道我可以手动删除它们或使事件具有幂等性,这样它就不会改变参与者的状态。理想情况下,我还希望忽略无法从事件存储中反序列化的任何事件(比如因为所需的反序列化类型不再存在)。重放 Akka.net 持久性事件时是否可以忽略反序列化失败?目前,如果任何事件未能反序列化,则参与者仍处于不一致状态。我试过搜索并没有找到任何东西。谢谢

0 投票
1 回答
468 浏览

akka.net - Akka.NET - 在恢复时停止持久演员

我有一个带有持久演员A的演员系统。在接收到消息M时,这应该生成一个持久性参与者B的实例,该实例执行一些危险且长时间运行的过程(涉及与其他方交换其他消息),并将消息N发送回A。收到N后,A应该终止B

Spawining 是这样实现的:当A接收到M时,它会验证、计算并创建一个事件M',该事件会被持久化。应用事件时,A使用预先计算的信息生成子节点。如果此时系统重新启动,则M'将重播给A,并且它将创建同一个子B的新化身。

我正在努力解决的是在恢复系统时处理终止子的情况:我希望看到任何在重新启动系统之前终止的B 。

最初我只是从父母那里发送毒丸消息,但由于持久演员不存储任何有关接收此类命令的事件,并且只是仁慈地死去,当系统恢复时,他们故事的最后一章不会重播给他们,他们只是继续闲逛。

我采取了不同的方法并尝试在处理AContext.Stop(child)的恢复消息时调用,但这导致所有这些B在它们恢复之前被终止,导致系统记录问题,例如恢复超时。

所以我想我要么必须让B在被杀死之前恢复,要么首先不重新创建它。

我现在要做的是在代表B状态的对象中引入一个标志,创建一个要发送的自定义消息而不是 PoisonPill,以便B可以持续一个被终止的事件,并且当它接收到的信息时恢复完成,检查该字段并自行终止。但是对于一个简单的要求,即在重启时不复活死去的演员,看起来工作量很大,所以我想知道我是在做完全错误的事情还是试图重新发明热水。

0 投票
1 回答
415 浏览

akka.net - Akka.Net SQL 服务器持久性配置似乎没有加载

我正在尝试将现有(演示)项目从 Akka.Net 1.0.8 升级到更新的版本(1.3.2 或其他)。

我一直坚持要加载 SQL 服务器持久性。我已采取以下步骤:

  1. 创建一个空白项目,并包含 Akka.Persistence.SqlServer 包及其所有依赖项
  2. 从这里复制 HOCON 配置示例:
    • 将数据库连接字符串更改为现有数据库
    • 将自动初始化设置为“开”
    • 修复了 akka.persistence.journal-store.sql-server.plugin-dispatcher 中的双引号问题
  3. 创建了一个演员系统
  4. 检查 SQL 服务器配置是否存在我的连接字符串

结果:

  • 1.3.2:连接字符串不存在(似乎是默认的回退配置),数据库中没有任何反应
  • 1.0.8:存在连接字符串,配置似乎正确,表是在空数据库中创建的。

这是我使用的 HOCON 配置:

有没有办法解决HOCON配置的加载问题?

0 投票
1 回答
898 浏览

c# - Akka.Net:如何通过期刊阅读器创建持久视图

根据 Akka.Net 文档,不推荐使用 PersistentView,而应使用 PersistenceQuery。在 ASP.Net Core 2.0 Web-API 应用程序中,我使用 Akka.Net 和事件源。我正在使用带有事件和快照的 SQL Server 插件来实现持久性。对于持久视图,我想开始使用 PersistenceQuery。当应用程序启动时,会回放事件以恢复参与者的状态。

我已经实现了一个日志阅读器,它正在接收事件,并使用它来组成一个视图。问题是,我怎样才能知道最后播放的事件已经到达,以便可以保存组合视图(作为一种快照)?我不想在恢复阶段的每个事件之后保存视图。

现在,当 ActorSystem 初始化(通过 Startup.cs 调用)时,日志阅读器就会启动。代码如下所示:

CreateViewsActor是一个 Actor,它使用消息来创建一个或多个视图。它还必须保存这些视图(当前以 JSON 格式保存到 SQL Server 表中)。

不幸的是,到目前为止,我还没有找到通过期刊阅读器创建持久视图的工作示例。但也许我一直在寻找错误的地方。到目前为止,我有以下问题:

  1. 有没有通过期刊阅读器创建持久视图的工作示例?
  2. CreateViewsActor(或任何负责创建和保存视图的代码)如何知道所有恢复消息都已处理?
  3. 初始化期刊阅读器的最佳位置是什么?