【问题标题】:How to use Akka future without providing time parameter?如何在不提供时间参数的情况下使用 Akka 未来?
【发布时间】:2015-05-11 15:13:15
【问题描述】:

我有两个主要演员(主要工人,次要工人)-

1.main worker 将样本组划分为单个样本 2.sec 主要工作人员获取样本并进行处理。(使用子工作人员)

问题:我希望主要工作人员等待加载任何新样本组,直到旧样本组完成。并且处理每个样本组所花费的时间各不相同。在这种情况下如何使用期货?每个主要工作人员在完成样本组结束时发送样本组完成消息。

在时间限制未知的情况下,可以在这种情况下使用期货吗?我是futures新手,我搜索的大部分futures例子都在其中提到过。

【问题讨论】:

  • 你有“两个”ActorSystems 还是有两种类型的演员...?我认为您不应该关注两个不同的演员系统。另外......这看起来像是工人驱动的工作分配问题的经典案例......这种模式在这些博客中得到了非常精美的解释和实现 - letitcrash.com/post/29044669086/…michaelpollmeier.com/akka-work-pulling-pattern
  • 关于期货...是的,可以使用期货。但我认为你不应该在这里使用期货,因为你需要一个工人拉动的工作安排。

标签: scala akka actor future


【解决方案1】:

这是一个不依赖于未来或时间的场景示例:

场景示例:

Actor1 拆分样本组并保留样本集合 在接收中,您可以从 Actor2 获取新样本的请求,并将其从当前样本集合中删除。 当样本集合为空时,您可以请求新的样本组。

Actor2 具有相同的收集机制来跟踪当前样本上已完成的工作,每次子工作人员完成一项任务时,将其从集合中删除。当集合为空时,向 Actor1 请求一个新样本

您可能希望在 Actor2 上安排一个超时,因此如果它没有消息超过一个时间间隔,那么您可以抛出错误或再次重试处理示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多