#1424 - RemoteSupport is now instantiated from the config, so now anyone can write their own Akka transport layer for remote actors

This commit is contained in:
Viktor Klang 2011-12-02 18:08:13 +01:00
parent b2ecad1327
commit 95791ce4c5
7 changed files with 17 additions and 11 deletions

View file

@ -297,7 +297,7 @@ class DefaultClusterNode private[akka] (
:: Nil)).start() :: Nil)).start()
lazy val remoteService: RemoteSupport = { lazy val remoteService: RemoteSupport = {
val remote = new akka.cluster.netty.NettyRemoteSupport val remote = new akka.remote.netty.NettyRemoteSupport
remote.start(hostname, port) remote.start(hostname, port)
remote.register(RemoteClusterDaemon.Address, remoteDaemon) remote.register(RemoteClusterDaemon.Address, remoteDaemon)
remote.addListener(RemoteFailureDetector.sender) remote.addListener(RemoteFailureDetector.sender)

View file

@ -8,7 +8,7 @@
akka { akka {
remote { remote {
transport = "akka.cluster.netty.NettyRemoteSupport" transport = "akka.remote.netty.NettyRemoteSupport"
use-compression = off use-compression = off

View file

@ -71,14 +71,20 @@ class Remote(val system: ActorSystemImpl, val nodename: String) {
lazy val eventStream = new NetworkEventStream(system) lazy val eventStream = new NetworkEventStream(system)
lazy val server: RemoteSupport = { lazy val server: RemoteSupport = {
val remote = new akka.remote.netty.NettyRemoteSupport(system) //new akka.remote.netty.NettyRemoteSupport(system)
remote.start() //TODO Any application loader here? ReflectiveAccess.createInstance[RemoteSupport](remoteExtension.RemoteTransport, Array[Class[_]](classOf[ActorSystem]), Array[AnyRef](system)) match {
case Left(problem)
log.error(problem, "Could not load remote transport layer")
throw problem
case Right(remote)
remote.start(None) //TODO Any application loader here?
system.eventStream.subscribe(eventStream.sender, classOf[RemoteLifeCycleEvent]) system.eventStream.subscribe(eventStream.sender, classOf[RemoteLifeCycleEvent])
system.eventStream.subscribe(remoteClientLifeCycleHandler, classOf[RemoteLifeCycleEvent]) system.eventStream.subscribe(remoteClientLifeCycleHandler, classOf[RemoteLifeCycleEvent])
remote remote
} }
}
def start(): Unit = { def start(): Unit = {
val serverAddress = server.system.asInstanceOf[ActorSystemImpl].provider.rootPath.remoteAddress //Force init of server val serverAddress = server.system.asInstanceOf[ActorSystemImpl].provider.rootPath.remoteAddress //Force init of server

View file

@ -12,7 +12,7 @@ class RemoteConfigSpec extends AkkaSpec("akka.cluster.nodename = node1") {
import config._ import config._
//akka.remote //akka.remote
getString("akka.remote.transport") must equal("akka.cluster.netty.NettyRemoteSupport") getString("akka.remote.transport") must equal("akka.remote.netty.NettyRemoteSupport")
getString("akka.remote.secure-cookie") must equal("") getString("akka.remote.secure-cookie") must equal("")
getBoolean("akka.remote.use-passive-connections") must equal(true) getBoolean("akka.remote.use-passive-connections") must equal(true)
// getMilliseconds("akka.remote.remote-daemon-ack-timeout") must equal(30 * 1000) // getMilliseconds("akka.remote.remote-daemon-ack-timeout") must equal(30 * 1000)

View file

@ -128,7 +128,7 @@ akka {
# secure-cookie = "050E0A0D0D06010A00000900040D060F0C09060B" # generate your own with '$AKKA_HOME/scripts/generate_secure_cookie.sh' or using 'Crypt.generateSecureCookie' # secure-cookie = "050E0A0D0D06010A00000900040D060F0C09060B" # generate your own with '$AKKA_HOME/scripts/generate_secure_cookie.sh' or using 'Crypt.generateSecureCookie'
secure-cookie = "" secure-cookie = ""
layer = "akka.cluster.netty.NettyRemoteSupport" layer = "akka.remote.netty.NettyRemoteSupport"
server { server {
hostname = "localhost" # The hostname or IP that clients should connect to hostname = "localhost" # The hostname or IP that clients should connect to

View file

@ -15,7 +15,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext
import org.springframework.core.io.{ ClassPathResource, Resource } import org.springframework.core.io.{ ClassPathResource, Resource }
import org.scalatest.{ BeforeAndAfterAll, FeatureSpec } import org.scalatest.{ BeforeAndAfterAll, FeatureSpec }
import java.util.concurrent.CountDownLatch import java.util.concurrent.CountDownLatch
import akka.cluster.netty.NettyRemoteSupport import akka.remote.netty.NettyRemoteSupport
import akka.actor._ import akka.actor._
import akka.actor.Actor._ import akka.actor.Actor._

View file

@ -9,7 +9,7 @@ import org.scalatest.matchers.ShouldMatchers
import org.scalatest.junit.JUnitRunner import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.springframework.context.support.ClassPathXmlApplicationContext import org.springframework.context.support.ClassPathXmlApplicationContext
import akka.cluster.netty.NettyRemoteSupport import akka.remote.netty.NettyRemoteSupport
import org.scalatest.{ BeforeAndAfterAll, FeatureSpec } import org.scalatest.{ BeforeAndAfterAll, FeatureSpec }
import java.util.concurrent.CountDownLatch import java.util.concurrent.CountDownLatch