使Akka邮箱中的某些邮件无效

时间:2018-03-30 19:54:07

标签: scala akka

我们有一群由主管控制的工人演员。每个参与者正在对用户在处理时可能正在编辑的文本文档执行半长期(300ms - 1s)任务。

每当用户编辑文件时,我们都会向此群集发送新任务以处理数据并返回结果。通常编辑速度如此之快,以至于在较旧的消息完成之前队列中有新消息。

所以我们的队列(从最旧到最新)看起来像这样:

Doc A v1
Doc A v2
Doc A v3

我们的工作人员在按照预期触摸v3之前仍会运行v1和v2,但到那时,v1和v2的结果无效/抛出。

我们可以通过某种方式查看receive函数中的邮箱,并选择仅在[mailbox].exists(_.filePath == path)为假时执行逻辑吗?是否有其他类似的方法可以在消息进行不必要的工作之前使消息无效?

1 个答案:

答案 0 :(得分:0)

设计人员无权访问其邮箱,但您可以使用逻辑实现自定义邮箱(有点类似于PriorityMailbox)。请参阅此处的文档:https://doc.akka.io/docs/akka/current/mailboxes.html