4

API 応答に依存するフローがあります。応答が期待どおりでない場合、例外がスローされます。この戦略は、Spray と spec2 を使用した直接メソッド テストでうまく機能します。

ただし、例外をスローするモジュールでストリームを使用しようとすると、フローは単に停止します。

これが私の流れです:

 Source(() => file)
      .via(csvToSeq)
      .via(getFromElastic)
      .via(futureExtrtactor)
      .via(findLocaionOfId)
      .foreach(v => v.map(v => println("foreached", v)))
      .onComplete(_ => system.shutdown())

これに対する私の戦略はmap、先物に使用することです。

そのようです:

 val findLocaionOfId = Flow[Future[Seq[(String, JsValue)]]].map(future => future.map(jsSeq => {
      jsSeq.zipWithIndex.flatMap { case (x, i) => x._2.asJsObject.getFields("_source").flatMap(js => {
        js.asJsObject("Couldn't convert").getFields("externalId").map({
          case JsString(str) => {
              (i + 1, i == 0, js)
            }
            else (i, false, js)
          }
          case _ => (i, false, x)
        })
      })
      }
    }))

これは、まったく別の場所にある潜在的な例外スローワーです。

val encoded_url = URLEncoder.encode(url, "UTF-8")

何かが欠けているようですが、何が見えません。ご指摘ありがとうございます。

4

2 に答える 2