How can I read akka's current open connections

I look at akka http

"com.typesafe.akka" %% "akka-actor" % "2.4.6", "com.typesafe.akka" % "akka-http-experimental_2.11" % "2.4.6" 

I am testing simple code as shown below. My main question is how can I improve it so that I get a notification for a closed connection. So can I print the number of connections currently open?

 object StatsRepo{ val totConn = new AtomicInteger(0) val currOpenConn = new AtomicInteger(0) // how to count this? } object Boot2 extends App{ implicit val system = ActorSystem("akka-http") implicit val materializer = ActorMaterializer() implicit val executionContext = system.dispatcher val requestHandler: HttpRequest => Future[HttpResponse] = { // do some work here... } val serverSource = Http().bind("0.0.0.0", 8080) val bindingFuture: Future[Http.ServerBinding] = serverSource.to(Sink.foreach { connection => StatsRepo.totConn.incrementAndGet() connection handleWithAsyncHandler requestHandler }).run() println(s"Server online at http://0.0.0.0:9090") } 
+5
source share
1 answer

Something like this might work:

 val bindingFuture: Future[Http.ServerBinding] = serverSource.to(Sink.foreach { connection => StatsRepo.totConn.incrementAndGet() connection.handleWith( Flow[HttpRequest].mapAsync(1)(requestHandler) .watchTermination()((_, connClosedFuture) => { connClosedFuture.onComplete(_ => currOpenConn.decrementAndGet()) })) }).run() 

See watchTermination

0
source

All Articles