在将mongo集合作为流进行迭代时处理错误

时间:2019-01-07 23:57:47

标签: scala akka-stream

我有一个简单的方法,可以使用akka流遍历mongo集合,对于每个元素,我都调用一个方法# A tibble: 2 x 5 customer_ID order_date segment valid_from valid_until <chr> <date> <chr> <date> <date> 1 A 2017-06-30 1 2017-01-01 2017-12-31 2 A 2019-07-30 3 2019-01-01 2019-12-31 ,该方法调用google api以丰富文档数据并将其插入到新集合中,   因此enrichDataFromGoogleAndInsert是异步的。

enrichDataFromGoogleAndInsert

我从控制器运行此方法,我想知道如何累积错误,并确保当 def processVendors()(implicit m: Materializer): Future[Done] = { val vendorsSource: Source[Vendor, Future[State]] = collection.find(json()) .noCursorTimeout .cursor[Vendor]() .documentSource() .throttle(50, 1.second) vendorsSource .runForeach(vendor => enrichDataFromGoogleAndInsert(vendor) ) } 抛出某种错误时脚本停止运行。

1 个答案:

答案 0 :(得分:0)

def processVendors()(implicit m: Materializer): Future[Done] = {
val vendorsSource: Source[Vendor, Future[State]] =
  collection.find(json())
    .noCursorTimeout
    .cursor[Vendor]()
    .documentSource()


vendorsSource
  .mapAsync(50)(vendor =>
    enrichDataFromGoogleAndInsert(vendor)
  )
  .withAttributes(ActorAttributes.supervisionStrategy(decider))
  .runWith(Sink.ignore)
}