Akka邮箱(队列)在couchbase

时间:2016-09-19 05:03:15

标签: java akka couchbase akka-cluster akka-persistence

我们现在正在使用Akka内存消息,并且没有节点集群。我们使用couchbase作为我们的处理后端,剩下足够的空间。

只要节点处于活动状态,一切正常。但是当任何节点发生故障时,所有内存中的消息都将丢失。我们确实通过实施“给我工作”的设计来减少它,其中工人演员在理想时要求工作并且在其队列中获得500条消息。但那些500仍然在记忆中。

有什么方法可以将couchbase用作每个邮箱的队列?老akka有耐用的邮箱,但现在已经不见了。持久性演员不解决这个问题。

1 个答案:

答案 0 :(得分:0)

您可以做的是创建一种自定义邮箱实现,并将其绑定到actor配置中的相应actor /路由器。这在official documentation中有完美描述,例如 -

class MyPrioMailbox(settings: ActorSystem.Settings, config: Config)
  extends UnboundedStablePriorityMailbox(
   // Create a new PriorityGenerator, lower prio means more important
   PriorityGenerator {
     // 'highpriority messages should be treated first if possible
     case 'highpriority => 0

     // 'lowpriority messages should be treated last if possible
     case 'lowpriority  => 2

     // PoisonPill when no other left
     case PoisonPill    => 3

     // We default to 1, which is in between high and low
     case otherwise     => 1
  })

简而言之,您创建了自己的邮箱,该邮箱由couchbase中的队列支持,您已完成。也许您需要弄清楚如何在actor之间拆分队列,并正确处理actor重启 - 但这与您正在使用的主管演员更相关。