问题标签 [akka-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.
json - 存储案例对象时使用哪个 JSON 库?
我需要将akka事件序列化为json。基于“在 Scala 中使用什么 JSON 库? ”我尝试了几个库。由于我的序列化程序对我的所有具体事件一无所知,因此由案例类和案例对象组成的事件应该使用反射进行序列化。json4s似乎最符合我的要求。
使用 json4s 的问题是,无论使用哪种实现,对象的反序列化都会产生不同的实例。由于我们对 case 对象大量使用模式匹配,这会破坏我们现有的所有代码。
所以我的问题是:在存储案例对象时,哪个 JSON 库可以与 scala 和 akka 持久性一起使用?
是否有一个库可以正确地通过反射处理案例对象的反序列化?- 或者有没有人有一个好的解决方法?
scala - 如何以及在何处处理 AkkaPersistence 持久事件以使信息对响应式 UI 有价值和有意义?
我非常熟悉PersistentActor和PersistentView在实现Akka Persistence时是如何工作的。
据我所知,考虑下面的例子。
Scala 案例类Contact。
日志中的 PersistentActor 持久事件是:
每次从响应式 UI 发送命令时,如果验证成功 202 CommandAccepted 或任何 CommandValidationError 被触发,则此类新事件将持续存在。
但是在响应式环境没有明显延迟的情况下,UI 必须能够查询REST API 后端并在后端WebSocket 推送通知 UI UUID "123af-232ff-232d" 可供读取后显示最新的Contact 对象:
据我了解,此结果应在将所有事件与可用的最新数据合并后发生。
所以,我真正关心的是:在这个后端应用程序中,我如何以及在哪里处理这些事件,一旦它们生成,合并这些数据,并存储合并的数据以供查询端读取。
如果有人可以阐明实施或纠正我的想法,请提前非常感谢。
scala - 处理 akka 持久性失败
我正在使用 Akka 持久性构建一个应用程序。
我必须正确检测和处理持久性故障。这怎么可能?它会抛出任何持久性异常吗?
这是我到目前为止所拥有的
scala - Akka Persistence ActorSelection 路径?
我正在尝试理解和使用 akka 持久性。我是这个 EventSourcing 世界的新手。
我试图让一个 ActorRef 列出一些项目,我收到这个“演员名称不是唯一的”错误;所以我正在尝试使用这个 actorSelection 方法。
问题是它要求一个路径。那是哪条路?如果我使用 PlayFramework 的 Akka.system(),如何确保使用正确的路径?
当前代码:
scala - PersistentFSM 不会持续到日志中
我正在尝试使用下面的简单示例测试 Akka 2.4 的新功能 - PersistentFSM
( http://doc.akka.io/docs/akka/2.4.0/scala/persistence.html#Persistent_FSM )。
此示例生成 5 个随机整数并将其添加到序列中。我想做的是保留数据,并在应用程序的下一次运行中继续附加到现有的数字序列。当前的文档PersistentFSM
有点稀缺,并且没有明确的方法来完成这项工作。有任何想法吗?
TestFSM.scala:
参考资料:
event-sourcing - 当演员状态只是增加大小时,我可以使用 akka 持久性吗?
我正在使用 akka 持久性尝试实现一个服务,其中我的状态可能非常大(假设它不适合 RAM)某些实体列表。假设用户希望所有实体的所有历史记录都可用。我可以在 akka 持久性中做到这一点吗?
现在我的演员状态是这样的。
如您所见,进程映射存储在内存中,因此如果进程数量很大,应用程序可能会耗尽内存。
cqrs - 如何在 CQRS 中发送对命令的响应?
我正在实现一个具有 Akka 持久性的 CQRS 系统,并且我正在尝试了解 CQRS 的请求响应位。
关于如何将响应发送回客户端的答案很少,本文还提到了一些好的模式。但是,不要用大词概括,有人可以解释一下我应该如何在 CQRS 中将响应发送回以下简单用例的客户端。
用例
假设用户在显示用户个人资料的页面上,该个人资料显示以下信息
- 用户名
- 地址
- 电话号码
在我的系统中,每个用户都有一个 Actor,用于存储该用户的个人资料信息。
在 UI 上,用户想要更新地址并且发生以下事情:
- 用户进行 AJAX REST 调用以更新用户地址
UpdateUserAddressCommand(address:String)
生成UpdateUserAddressEvent(address:String)
生成UserAddressUpdatedEvent(updatedAddress:String)
已生成(已更新 UserActor 的状态)
现在如何发回系统中 UserProfile 的完整状态?由于 CQRS 不鼓励发送对命令的响应?
scala - AtLeastOnceDelivery 不适用于akka-persistence 中的询问?
我正在使用 Akka 并使用 ask 方法发送消息
但是当我试图将那个演员替换为 时PersistentActor with AtLeastOnceDeliveryLike
,未来永远不会完成并且会因超时而倒下。
是否可以通过 ask 方法使用 Akka Persistent Actor?
scala - scala中单元的扩展函数缺少参数类型
我正在尝试将一些参与者接收代码包装在 db 事务中,以构建通过更新数据库中的信息来处理事件的幂等持久视图。
我应该怎么办?我不明白这个错误的确切含义。从我的角度来看,我已经编写了所有类型,编译器不需要推断任何东西。
scala - 使用 akka-persistance 进行事件溯源:将状态增长为列表?
我正在使用 Akka + Scala 使用 CQRS + 事件源来设计后端。我不确定如何处理不断增长的状态。例如,我将拥有越来越多的用户列表。据我了解,每个用户都将在 UserCreated 事件之后创建,此类事件将由 PersistentActor 重播,并且用户将存储在一个集合中。就像是:
显然这种状态最终会变得太大而无法被这个演员记住,所以我想我做错了什么。
我找到了这个示例项目:这个想法似乎每个用户都应该由不同的参与者持有,并根据需要(从事件历史记录)加载。
这样做的正确方法是什么?非常感谢。