Scala 数据结构去重复 akka 完成的工作

Scala data structure to deduplicate work done by akka

我想在 Scala 中实现一个数据结构,它允许我对我的程序完成的工作进行重复数据删除。该程序基于akka-scala框架构建。

每次我在我的 worker 中收到一条消息时,我都会检查这个数据结构以了解当前正在处理的内容。如果此类消息类型已经在处理中,我会将其存储在该数据结构中并等待处理结果。当处理结果到达时,我会为所有这种类型的存储消息发送确认,并将其从结构中删除

如果在这个数据结构中没有找到这样的消息类型,我会把它存储在那里并开始处理。

目前我想到的是mutable.Map[Long, Seq[ETLMessageMeta]]

这样的任务还有什么更好的吗?

如果每个工作单元都是唯一可识别的,那么 Map 听起来很合适。但是,不要使用 mutable.Map,而是使用 immutable.Mapvar,以帮助确保此可变状态不会泄漏到工作 actor 之外。例如:

class Worker extends Actor {
  var inProgress = immutable.Map[Long, Seq[ETLMessageMeta]]()

  def receive = ???
}