def start()

in pekko-sample-distributed-workers-scala/src/main/scala/worker/Main.scala [58:82]


  def start(port: Int, role: String, workers: Int = 2): Unit = {
    ActorSystem(
      Behaviors.setup[SelfUp](ctx => {
        val cluster = Cluster(ctx.system)
        cluster.subscriptions ! Subscribe(ctx.self, classOf[SelfUp])
        createWorkResultsConsumer(ctx)
        Behaviors.receiveMessage {
          case SelfUp(_) =>
            ctx.log.info("Node is up")
            if (cluster.selfMember.hasRole("back-end")) {
              WorkManagerSingleton.init(ctx.system)
            }
            if (cluster.selfMember.hasRole("front-end")) {
              val workManagerProxy = WorkManagerSingleton.init(ctx.system)
              ctx.spawn(FrontEnd(workManagerProxy), "front-end")
            }
            if (cluster.selfMember.hasRole("worker")) {
              (1 to workers).foreach(n => ctx.spawn(Worker(), s"worker-$n"))
            }
            Behaviors.same
        }
      }),
      "ClusterSystem",
      config(port, role))
  }