使用Akka进行分叉和连接

Deb*_*Roy 7 parallel-processing scala future actor akka

问题陈述:我有一系列需要以并行方式处理的证券.在Java中,我使用线程池来处理每个安全性,并使用锁存器来倒计时.完成后我会做一些合并等.

所以我给我的SecurityProcessor(这是一个演员)发了消息,等待所有的期货完成.最后,我使用MergeHelper进行后处理.SecurityProcessor采用安全性,进行一些I/O处理并回复安全性

  val listOfFutures = new ListBuffer[Future[Security]]()
  var portfolioResponse: Portfolio = _
  for (security <- portfolio.getSecurities.toList) {
    val securityProcessor = actorOf[SecurityProcessor].start()
    listOfFutures += (securityProcessor ? security) map {
      _.asInstanceOf[Security]
    }
  }
  val futures = Future.sequence(listOfFutures.toList)
  futures.map {
    listOfSecurities =>
      portfolioResponse = MergeHelper.merge(portfolio, listOfSecurities)
  }.get
Run Code Online (Sandbox Code Playgroud)

这个设计是否正确,是否有更好/更酷的方式来使用akka实现这个常见问题?

Vik*_*ang 8

val futureResult = Future.sequence(
                  portfolio.getSecurities.toList map { security => (actorOf[SecurityProcessor].start() ? security).mapTo[Security] }
                ) map { securities => MergeHelper.merge(portfolio, securities) }
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴你喜欢它,请在Akka邮件列表上分享你喜悦和/或痛苦的泪水! (2认同)