У меня есть много URL-адресов, которые я хотел бы получить с помощью Akka HTTP и потоков.
Возможно, URL-адреса сформированы неправильно или DNS не может разрешить имя хоста. В этих случаях я бы хотел, чтобы поток superPool () просто возвращал Failure как Try [HTTPResponse] вместо того, чтобы генерировать исключение и завершать весь поток.
Как мне go это сделать ? Я искал это, но ничего не придумал, не могу найти способ обрабатывать esceptions в самих документах.
EDIT: немного поигравшись, я обнаружил, что единственная проблема - с URL-адресами HTTPS, и даже тогда поток не закрывается, но я получаю сообщение об ошибке на консоли, чего не должно происходить. Вот небольшой пример для воспроизведения:
import akka.stream.scaladsl.{Sink, Source}
import akka.NotUsed
import scala.util.Success
import akka.http.scaladsl.model.HttpRequest
import akka.http.scaladsl.Http
import akka.actor.ActorSystem
implicit val system = ActorSystem()
Source.single((HttpRequest(uri = "https://a.com"), NotUsed))
.via(Http().superPool[NotUsed]())
.map(_ match {
case (Success(v), _) => {v.discardEntityBytes(); println("Success")}
case _ => println("Failure")
})
.runWith(Sink.ignore)
Может быть, Http().superPool
ожидает URL-адреса HTTP, и есть другой способ работы с HTTPS?
РЕДАКТИРОВАТЬ 2: Я открыл проблему с проектом: https://github.com/akka/akka-http/issues/3138