【问题标题】:Akka not automatically join seed nodesAkka 不会自动加入种子节点
【发布时间】:2014-01-09 02:27:50
【问题描述】:

我用 play app 定义了一个 akka 集群。

应用程序.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
  }
}

然后我定义一个集群监听器

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
  }
}

然后像这样启动我的应用程序

val clusterListener = Akka.system.actorOf(Props[ClusterListener], "cluster-listener")
  Cluster(Akka.system).subscribe(clusterListener, classOf[ClusterDomainEvent])

我首先在 192.168.1.100 上启动应用程序,它加入了。

然后我在192.16.1.101192.16.1.102 上启动同一个应用程序。

但第一个种子节点永远不会收到加入事件!

我应该怎么做,让其他节点加入这个集群?

【问题讨论】:

    标签: scala playframework playframework-2.0 akka akka-cluster


    【解决方案1】:

    我找到了原因。集群是在一个对象中定义的。并且对象是惰性初始化的,因此只需在 Global.scala 中调用该对象的任何方法。傻我!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多