Awesome
akka-stream-netty is a scala lib to adapt netty transport to akka-stream, which let us can use native transport with:
- epoll
- kqueue
- unix domain socket
alpakka-unix-domain-socket would be a alternative if you only want to use unix domain socket.
Dependencies
libraryDependencies += "com.github.zhongl" %% "akka-stream-netty-all" % <latest tag>
Usage
import java.net._
import scala.concurrent.duration._
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
import akka.util.ByteString
import io.netty.channel.socket._
import zhongl.stream.netty._
import all._
implicit val system = ActorSystem("demo")
implicit val mat = ActorMaterializer()
implicit val ec = system.dispatcher
Netty().bindAndHandle[ServerSocketChannel](Flow[ByteString].map(identity), new InetSocketAddress("localhost", 8080)).flatMap { sb =>
Source.repeat(ByteString("a"))
.delay(1.seconds)
.via(Netty().outgoingConnection[SocketChannel](sb.localAddress))
.runForeach(println)
.flatMap(_ => sb.unbind())
}
More usage information please see test cases.