Changing so that you can specify any dispatcher id to be used for remoting

This commit is contained in:
Viktor Klang 2012-04-27 01:10:20 +02:00
parent 45694c65f4
commit a99d980bb9
3 changed files with 15 additions and 8 deletions

View file

@ -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 "<id.of.dispatcher>" 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

View file

@ -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)

View file

@ -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)