【发布时间】:2011-12-05 21:13:10
【问题描述】:
我们有一个瘦 Web 层 (Scalatra),它将传入的 HTTP 请求转换为发送到 线程绑定 事件处理参与者的事件(案例类)。一些事件包含聚合根的 id,由于各种原因我们需要对其进行变异。应用程序数据的总量太大而无法放入内存,因此我们需要在对其进行操作之前通过其 id 从数据源中检索聚合。当然,我们不希望事件处理参与者阻塞,因此我们的想法是生成一个新的(基于事件的?)参与者来加载数据、对其进行变异并将其存储回数据中来源。理想情况下,我想在应用程序中处理并发,而不是依赖数据源的 ACID 功能。基本上我需要对每个聚合进行序列化/事务访问。
这可以使用演员来实现吗?
最好的方法是什么?
在事件处理参与者中保留ConcurrentHashMap,其中包含以聚合根 ID 为键的参与者?
或者我们是否必须涉及 STM:s (ScalaSTM/Akka) 或类似的东西?
【问题讨论】:
标签: scala concurrency transactions actor aggregateroot