我有一个简单的方法,可以使用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)
)
}
抛出某种错误时脚本停止运行。
答案 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)
}