Akka não juntar-se automaticamente a semente de nós
-
21-12-2019 - |
Pergunta
Definir um akka cluster com jogar app.
aplicação.conf
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
remote {
log-remote-lifecycle-events = off
netty.tcp {
hostname = "192.168.1.100"
port = 2552
}
}
cluster {
seed-nodes = [
"akka.tcp://application@192.168.1.100:2552",
"akka.tcp://application@192.168.1.101:2552",
"akka.tcp://application@192.168.1.102:2552"]
auto-down-unreachable-after = 10s
}
}
Então eu definir um cluster ouvinte
class ClusterListener extends Actor with ActorLogging {
def receive = {
case state: CurrentClusterState =>
log.info("Current members: {}", state.members.mkString(", "))
case MemberUp(member) =>
log.info("Member is Up: {}", member.address)
case UnreachableMember(member) =>
log.info("Member detected as unreachable: {}", member)
case MemberRemoved(member, previousStatus) =>
log.info("Member is Removed: {} after {}",
member.address, previousStatus)
case _: ClusterDomainEvent => // ignore
}
}
E começar o meu aplicativo como este
val clusterListener = Akka.system.actorOf(Props[ClusterListener], "cluster-listener")
Cluster(Akka.system).subscribe(clusterListener, classOf[ClusterDomainEvent])
Eu em primeiro lugar, inicie o aplicativo no 192.168.1.100, ele se une.
Então eu começo a mesma aplicação no
192.16.1.101
e192.16.1.102
.
Mas a primeira semente nó nunca receber uma associação evento!
O que devo fazer, para que os outros nós aderir a este cluster ?
Solução
Eu encontrei a razão.O cluster é definido em um objeto.E objeto são preguiçosos inicializado, Então, basta chamar qualquer método do objeto a nível Global.scala.Bobo-me!!!
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow