问题标签 [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 回答
354 浏览

f# - 是否可以从 F# 挂钩到 prestart 方法?

在当前的 v.1.0 版本的 Akka.NET 中,不可能将 FSM 方法与来自 F# API 的持久性结合起来。我想知道是否可以使用像这样的功能方法 http://bartoszsypytkowski.com/blog/2014/07/05/fsharp-akka-net/ 并同时挂钩演员的预启动方法。如果在 prestart 方法的执行期间可以从持久存储中读取,那将是实现某种“自定义”持久性的一种方式。

任何其他关于如何使用自定义持久解决方案的建议都非常受欢迎。

0 投票
0 回答
89 浏览

sql-server - Akka.Net: Custom table schema for EventJournal in Akka.Persistence.SqlServer

Is there an easy way use your own custom table schema when working with Akka.Persistence.SqlServer in Akka.Net?

There is the option to replace the QueryBuilder and QueryMapper, but I can't see a way to replace the default JournalEntry implementation in the DbEngine.

Edit: Overriding the CopyParamsToCommand method in an inherited version of SqlServerJournalEngine could work? But how to plug that in?

0 投票
1 回答
845 浏览

mongodb - 是否有 Akka.net Persistence with MongoDb 的工作示例?

我正在尝试将 Akka.Net 配置为 MongoDb 的日志持久性,但它抛出了一个我无法弄清楚的异常。 是否有任何我可以查看的参考示例以了解它应该如何工作? 我本来希望单元测试中的示例能够满足我的这种需求,但是对于持久性的 MongoDb 实现缺少测试。:(

这是我得到的错误:

这是我的这个应用程序的 HOCON:---编辑 - 感谢 Horusiath 的提示;基于此,我更新到这个 HOCON 并且 Sqlite 提供程序可以工作,但是 MongoDb 仍然给出错误。

所以,回到我最初的问题:是否有工作的 MongoDb 样本,我可以检查它以了解它是如何工作的?

0 投票
1 回答
158 浏览

akka.net - Akka.net:确保始终启动超时消息

想象一下,你有一个有“业务”超时的演员。即使演员所在的服务器死机或重新启动,我也希望启动该超时。我会创建那个持久的演员。

即使单个服务器发生故障,哪种方法可以确保启动超时?

谢谢

0 投票
1 回答
332 浏览

akka.net - 为什么 Akka.Persistance 不重播我的日记条目

我正在为 Service Fabric 编写 Akka.Persistence 的实现,但我似乎无法让快照工作。当它尝试恢复状态时,它会获取最新的快照,但不会重播自最新快照以来的事件。我不清楚如果我只是没有正确连接组件,或者我的持久性库的实现不正确。我的演员是一个简单的计数器,我的状态只是当前的计数。我希望首先调用 Recover,然后在最后一个快照和最高序列号之间的每个日记条目中调用 Recover。日志中有一个函数 ReplayMessagesAsync(...) 看起来应该这样做,但它没有被调用。我的计数器的代码如下,我的其余代码是:代码

0 投票
1 回答
799 浏览

akka.net - Akka.Persistence 恢复的顺序是什么?

我在 Petabridge 博客上阅读了Akka.Persistence 介绍,我发现这部分代码有点混乱:

您可能想要在恢复时做的是......首先拍摄最后一个快照,然后重播日志中的消息。

但是这里我们有两个Recover()声明,第一个是期刊。当 Akka .NET 执行恢复时,这些Recover()方法的顺序实际上是如何发挥作用的呢?

0 投票
1 回答
328 浏览

akka.net - 我可以从具有相同 PersistenceId 的不同参与者读/写吗?

Petabridge博客的 Akka.Persistence 介绍清楚地表明,您不能有多个具有相同 PersistenceId 的演员:

PersistenceId字段很重要——它唯一地标识了一个使用 Akka.Persistence 持久化其状态的实体,并且在任何给定时间对于单个PersistenceId.

[...] 所以想象一下,如果您有两个具有相同 PersistenceId 但序列号不同的演员写入同一个商店。这将是混乱的,并且不可避免地会出错 - 这就是为什么每个 PersistenceId 在您的 ActorSystem 中都是全球唯一的至关重要的原因(至少对于所有写入该商店的演员来说)。

我可以想到一个场景,您将有两个独立的参与者:一个负责将持久性状态保存到数据库(即调用Persist()),另一个负责在手动请求时重播来自日志的消息(即调用Recover())。读取和写入操作将由不同的参与者进行。只有一个人写过,也只有一个人读过。但是,两者都需要相同的 PersistenceId。

我相信在这种情况下,让两个参与者使用相同的 PersistenceId 应该是安全的。但是鉴于上面引用的上述警告,有什么理由说明这种方法在实践中可能是危险的?

0 投票
1 回答
334 浏览

notifications - AKKA.NET - 排队和重试

作为将我们的应用程序从巨大的单体转变为麦克风的一部分,我们正在开发一个通知微服务,所有其他模块都可以使用它来发送电子邮件、短信、推送通知等通知。

该通知服务的一个客户端是我们计划开发的 windows 服务,它会针对用户注册、密码重置等各种事件触发电子邮件通知。Windows 服务将有 2 个部分

  1. 一个基于 REST 的 API,可由用户注册等模块调用以触发通知。当调用 ReST API 时,该服务将加载相应的模板,填写必要的值并调用通知服务发送电子邮件。如果 api 调用失败,通知的详细信息将被发送到后台任务,该任务将重试该操作固定次数,然后放弃并引发错误。

  2. 后台任务将在放弃并引发错误之前重试操作固定次数以发送通知

我们最初的计划是使用队列在两个部分之间进行通信。流程会是这样

客户端 --> ReST API --> 加载模板和填充值 -> 调用通知服务 --> 将消息添加到队列(以防通知失败)--> 后台任务拉取队列的消息 --> 重试操作--> 将通知标记为失败,以防最大重试失败(将手动占用

除了使用队列,另一种方法是使用持久的 AKKA.NET 参与者来执行此操作,因为 AKKA.NET 支持邮箱但尚未找到任何类似的用例......如果我们选择 akka.net,我们是否走在正确的道路上...请发送您的意见

0 投票
1 回答
280 浏览

akka.net - Akka.Net 和内存持久化

我正在努力解决持久性问题,但我还没有恢复演员的能力。

我的意图是通过它的 persistenceId 获取一个 Actor(我们在 DDD 中使用 GetById 获取一个实体的方式相同)。

我可以获取对 List 的引用并将其添加到 List Manager 中的变量中,但我正在寻找的是,一旦 Actor 死亡,如何获取 Actor 的当前状态(按事件恢复)以便可以进行修改。

如果我的问题不清楚,请告诉我

这是我到目前为止所做的:**命令和事件**

**列表类**

** 列表管理器 **

** Program.cs ** 命名空间 AkkaPersistence { class Program { static void Main(string[] args) {

}

** 控制台文本 **

** 更新 1 **2017-01-24

进一步努力,我能够获得基于名称的演员实例。为此,我需要创建 PersistenceId 作为命令的一部分,并使用持久性 Id 命名 Actor

通过这样做,我可以使用 Context.Child(Name) 来获取 Actor。

我正在 ListManager:Receive 中执行 Context.Stop(newListRef) 假设这将停止 List Actor 并在我使用 Context.Child(Name) 访问时强制它恢复,但这并没有发生,但不知何故列表状态是正确的. 不知道怎么做。

我将根据我今天从 Horusiath 收到的评论进行更多测试

0 投票
2 回答
1654 浏览

c# - 如何使用 Akka.net 和 Akka.Persistence 应用 CQRS 的 EventBus

我对如何使用 Akka.net 应用 CQRS 和事件溯源感兴趣。我已经注意到提供 ES 部分的Akka.Persistence 。

据我了解,命令处理程序和 AggergateRoot 可以由单个类中的 ReceivePersistentActor 表示。我有一个基类(这里不完整)......

我不想通过 EventBus 发送事件,Akka 似乎在它的包中带来了一些可能适合其他 CQRS 框架(NCqrs 中的 EventBus 抽象,Inceptum中的EventBus抽象)或 Gregory Young简单示例的方式。

但是,在我看来,知道 AggregateRoot 域对象参与者中的事件总线的实现很奇怪。我可以将责任交给演员孩子或注入类似IAbstractEventBus接口之类的东西,用于切换实现,但我认为 AggregateRoot 不应该负责在持久化后发布事件并通知所有订阅者,对吧!?但是 ES 部分似乎与 Actor 耦合。

使用 Akka.net 和 Akka.Persistence 的典型方法是什么?任何设计想法如何拆分?

我偶然发现了 Akka.net 的IEventAdapter接口,但我不确定这是否能让我走上正确的道路(或黑暗的一面)......