【问题标题】:Akka mailbox (queue) in couchbasecouchbase 中的 Akka 邮箱(队列)
【发布时间】:2016-09-19 05:03:14
【问题描述】:

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

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

有什么方法可以使用 couchbase 作为每个邮箱的队列吗?较旧的 akka 有耐用的邮箱,但现在已经不见了。持久的actor并没有解决这个问题。

【问题讨论】:

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


    【解决方案1】:

    您可以做的是创建某种自定义邮箱实现,并将其绑定到参与者配置中的适当参与者/路由器。这在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 中的队列支持,然后您就完成了。也许您需要弄清楚如何在参与者之间拆分队列,并正确处理参与者重新启动 - 但这与您正在使用的主管参与者更相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-06
      • 2016-01-27
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多