g.info( "Member is Removed: {} after {}", member.address, previousStatus) case UnreachableMember(member) => log.info("Member detected as unreachable: {}", member) cluster.down(member.address) //手工驱除,不用auto-down
case _: MemberEvent => // ignore
} } object ClusterEventsDemo { def main(args: Array[String]): Unit = { //重设port,seed-node-address
val port =
if (args.isEmpty) "0"
else args(0) val addr =
if (args.length < 2) "2551"
else args(1) val seednodeSetting = "akka.cluster.seed-nodes = ["+
"\"akka.tcp://clusterSystem@127.0.0.1:"+ s"${addr}"+"\"]" val config = ConfigFactory.parseString(s"akka.remote.netty.tcp.port = ${port}") .withFallback(ConfigFactory.parseString(seednodeSetting)) .withFallback(ConfigFactory.load("cluster.conf")) val clusterSystem = ActorSystem(name="clusterSystem",config=config) val eventListener = clusterSystem.actorOf(Props[EventLisener],"eventListener") val cluster = Cluster(clusterSystem) cluster.registerOnMemberRemoved(println("Leaving cluster. I should cleanup... ")) cluster.registerOnMemberUp(println("Hookup to cluster. Do some setups ...")) println("actor system started!") scala.io.StdIn.readLine() clusterSystem.terminate() } }
|