gpt4 book ai didi

akka - 使用 akka 流有条件地跳过流

转载 作者:行者123 更新时间:2023-12-03 23:13:52 27 4
gpt4 key购买 nike

我正在使用 akka 流,并且我有一段我需要有条件地跳过的图表,因为流程无法处理某些值。具体来说,我有一个接受字符串并发出 http 请求的流,但是当字符串为空时,服务器无法处理这种情况。但我只需要返回一个空字符串。有没有办法做到这一点而不必通过 http 请求知道它会失败?我基本上有这个:

val source = Source("1", "2", "", "3", "4")
val httpRequest: Flow[String, HttpRequest, _]
val httpResponse: Flow[HttpResponse, String, _]
val flow = source.via(httpRequest).via(httpResponse)

我唯一能想到的就是在我的 httpResponse 流中捕获 400 错误并返回一个默认值。但是我希望能够避免为我知道会事先失败的请求而访问服务器的开销。

最佳答案

您可以使用 flatMapConcat :

(警告:从未编译过,但你会明白它的要点)

val source = Source("1", "2", "", "3", "4")
val httpRequest: Flow[String, HttpRequest, _]
val httpResponse: Flow[HttpResponse, String, _]
val makeHttpCall: Flow[HttpRequest, HttpResponse, _]
val someHttpTransformation = httpRequest via makeHttpCall via httpResponse
val emptyStringSource = Source.single("")
val cleanerSource = source.flatMapConcat({
case "" => emptyStringSource
case other => Source.single(other) via someHttpTransformation
})

关于akka - 使用 akka 流有条件地跳过流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817241/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com