diff --git a/akka-remote/src/main/resources/reference.conf b/akka-remote/src/main/resources/reference.conf index 052f43e3b26..4512ea3a985 100644 --- a/akka-remote/src/main/resources/reference.conf +++ b/akka-remote/src/main/resources/reference.conf @@ -92,9 +92,9 @@ akka { # (I) Reuse inbound connections for outbound messages use-passive-connections = on - # (I) If "on" then the default dispatcher will be used to accept inbound connections, - # and IO. If "off" then dedicated threads will be used. - use-default-dispatcher-for-io = off + # (I) EXPERIMENTAL If "" then the specified dispatcher will be used to accept inbound connections, + # and perform IO. If "" then dedicated threads will be used. + use-dispatcher-for-io = "" # (I) The hostname or ip to bind the remoting to, # InetAddress.getLocalHost.getHostAddress is used if empty diff --git a/akka-remote/src/main/scala/akka/remote/netty/Server.scala b/akka-remote/src/main/scala/akka/remote/netty/Server.scala index c20c1cba355..3de1556bb38 100644 --- a/akka-remote/src/main/scala/akka/remote/netty/Server.scala +++ b/akka-remote/src/main/scala/akka/remote/netty/Server.scala @@ -26,10 +26,14 @@ class NettyRemoteServer(val netty: NettyRemoteTransport) { val ip = InetAddress.getByName(settings.Hostname) - private val factory = { - val boss, worker = if (settings.UseDefaultDispatcherForIO) netty.system.dispatcher else Executors.newCachedThreadPool() - new NioServerSocketChannelFactory(boss, worker) - } + private val factory = + settings.UseDispatcherForIO match { + case Some(id) ⇒ + val d = netty.system.dispatchers.lookup(id) + new NioServerSocketChannelFactory(d, d) + case None ⇒ + new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()) + } private val executionHandler = new ExecutionHandler(netty.executor) diff --git a/akka-remote/src/main/scala/akka/remote/netty/Settings.scala b/akka-remote/src/main/scala/akka/remote/netty/Settings.scala index e12da190bc8..e2f69d77b57 100644 --- a/akka-remote/src/main/scala/akka/remote/netty/Settings.scala +++ b/akka-remote/src/main/scala/akka/remote/netty/Settings.scala @@ -27,7 +27,10 @@ class NettySettings(config: Config, val systemName: String) { } val UsePassiveConnections = getBoolean("use-passive-connections") - val UseDefaultDispatcherForIO = getBoolean("use-default-dispatcher-for-io") + val UseDispatcherForIO = getString("use-dispatcher-for-io") match { + case "" | null ⇒ None + case dispatcher ⇒ Some(dispatcher) + } val ReconnectionTimeWindow = Duration(getMilliseconds("reconnection-time-window"), MILLISECONDS) val ReadTimeout = Duration(getMilliseconds("read-timeout"), MILLISECONDS)