Skip to content

Instantly share code, notes, and snippets.

@tkrs
Last active May 10, 2017 04:26
Show Gist options
  • Select an option

  • Save tkrs/22f5f42f4cd85e8522301ea5cc54f6f4 to your computer and use it in GitHub Desktop.

Select an option

Save tkrs/22f5f42f4cd85e8522301ea5cc54f6f4 to your computer and use it in GitHub Desktop.
Akka-Http - Outgoing request stream error
name := "akka-tut"
version := "1.0"
scalaVersion := "2.12.2"
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-http" % "10.0.6"
)
import java.nio.charset.StandardCharsets._
import akka.{Done, NotUsed}
import akka.actor.ActorSystem
import akka.http.scaladsl.Http.HostConnectionPool
import akka.http.scaladsl._
import akka.http.scaladsl.model.{HttpRequest, HttpResponse}
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Flow, Sink, Source}
import scala.concurrent.{Await, ExecutionContext, Future}
import scala.concurrent.duration._
import scala.util.{Failure, Success, Try}
object Main {
def main(args: Array[String]): Unit = {
implicit val system = ActorSystem()
implicit val mat = ActorMaterializer()
import system.dispatcher
// import ExecutionContext.Implicits.global
val google: Flow[(HttpRequest, Long), (Try[HttpResponse], Long), HostConnectionPool] =
Http().cachedHostConnectionPoolHttps[Long]("www.google.com")
val qs: Source[String, NotUsed] =
Source(scala.collection.immutable.Iterable("foo", "bar", "hoge", "quux"))
def handle(r: (Try[HttpResponse], Long)): Future[Done] = r match {
case (Failure(e), u) => println(u); Future.failed(e)
case (Success(v), u) =>
v.entity.toStrict(5.seconds)
.map(a => println(s"$u: ${v.status}, ${a.contentType}"))
.map(_ => Done)
}
val go: Source[Done, NotUsed] =
qs.async
.map(q => HttpRequest(uri = s"/search?q=$q")).async
.zipWithIndex.async
.via(google).async
.mapAsync(2)(handle)
val runAndDown = for {
_ <- go.runWith(Sink.ignore).andThen { case t => Future.successful(println(s"Run stream: $t")) }
_ <- Http().shutdownAllConnectionPools().andThen { case t => println(s"Shutdown all connections: $t") }
_ <- system.terminate().andThen { case t => println(s"Terminate: $t") }
} yield ()
println(Await.result(runAndDown, 20.seconds))
}
}
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA 2017.1.3 CE EAP.app/Contents/lib/idea_rt.jar=62517:/Applications/IntelliJ IDEA 2017.1.3 CE EAP.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/tools.jar:/Users/satotakeru/code/github.com/DAConsortium/akka-tut/target/scala-2.12/classes:/Users/satotakeru/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.1.jar:/Users/satotakeru/.ivy2/cache/com.typesafe.akka/akka-parsing_2.12/jars/akka-parsing_2.12-10.0.3.jar:/Users/satotakeru/.ivy2/cache/com.typesafe.akka/akka-http_2.12/jars/akka-http_2.12-10.0.3.jar:/Users/satotakeru/.ivy2/cache/com.typesafe.akka/akka-http-core_2.12/jars/akka-http-core_2.12-10.0.3.jar:/Users/satotakeru/.ivy2/cache/com.typesafe/config/bundles/config-1.3.0.jar:/Users/satotakeru/.ivy2/cache/com.typesafe/ssl-config-core_2.12/bundles/ssl-config-core_2.12-0.2.1.jar:/Users/satotakeru/.ivy2/cache/com.typesafe.akka/akka-actor_2.12/jars/akka-actor_2.12-2.4.16.jar:/Users/satotakeru/.ivy2/cache/com.typesafe.akka/akka-stream_2.12/jars/akka-stream_2.12-2.4.16.jar:/Users/satotakeru/.ivy2/cache/org.reactivestreams/reactive-streams/jars/reactive-streams-1.0.0.jar:/Users/satotakeru/.ivy2/cache/org.scala-lang.modules/scala-java8-compat_2.12/bundles/scala-java8-compat_2.12-0.8.0.jar:/Users/satotakeru/.ivy2/cache/org.scala-lang.modules/scala-parser-combinators_2.12/bundles/scala-parser-combinators_2.12-1.0.4.jar Main
objc[53859]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java (0x10c2014c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10d3254e0). One of the two will be used. Which one is undefined.
2: 302 Found, text/html; charset=UTF-8
0: 302 Found, text/html; charset=UTF-8
3: 302 Found, text/html; charset=UTF-8
1: 302 Found, text/html; charset=UTF-8
Run stream: Success(Done)
Shutdown all connections: Success(())
[ERROR] [05/10/2017 13:23:19.230] [default-akka.actor.default-dispatcher-3] [akka.actor.ActorSystemImpl(default)] Outgoing request stream error (akka.stream.AbruptTerminationException)
[ERROR] [05/10/2017 13:23:19.233] [default-akka.actor.default-dispatcher-3] [akka.actor.ActorSystemImpl(default)] Outgoing request stream error (akka.stream.AbruptTerminationException)
[ERROR] [05/10/2017 13:23:19.233] [default-akka.actor.default-dispatcher-3] [akka.actor.ActorSystemImpl(default)] Outgoing request stream error (akka.stream.AbruptTerminationException)
[ERROR] [05/10/2017 13:23:19.233] [default-akka.actor.default-dispatcher-3] [akka.actor.ActorSystemImpl(default)] Outgoing request stream error (akka.stream.AbruptTerminationException)
Terminate: Success(Terminated(Actor[akka://default/]))
()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment