Акка, как достичь удаленных участников кластера

Сначала я хотел бы сказать, что я очень новичок в Акке и актерах :)

Я хотел бы создать распределенное приложение. Я разберу приложение в веб-части (REST API) и части управления пользователями. Но каков правильный способ доступа к актеру из другой части приложения?

Я знаю, что я могу получить доступ к выбору актера, указав его адрес ( https://doc.akka.io/docs/akka/2.5/remoting.html#looking-up-remote-actors ), но не существует способа где мне не нужно работать с адресами?

Я просто хочу создать систему, в которой очень легко достичь удаленного актера, не используя их адреса.

scala,akka,akka-cluster,akka-remote-actor,

0

Ответов: 2


0 принят

В Cluster Sharding идентификатор актера persistanceIdдолжен быть частью сообщения, которое вы отправляете всему кластеру. Вот почему вам нужно определить extractEntityId.

Подробнее в документации: https://doc.akka.io/docs/akka/2.5/cluster-sharding.html


0

Возможно, вы можете взглянуть на Distributed Publish Subscribe в кластере

Но предел заключается в том, что ваша локальная актерская система, в которой размещается ваш локальный актер и удаленная система, которая размещает ваш удаленный актер, должна быть настроена как akka cluster.

Если кластер может быть вашим дизайном, вы можете сделать следующее:

Удаленная часть:

class Subscriber extends Actor with ActorLogging {
  import DistributedPubSubMediator.{ Subscribe, SubscribeAck }
  val mediator = DistributedPubSub(context.system).mediator
  // subscribe to the topic named "content"
  mediator ! Subscribe("content", self)

  def receive = {
    case s: String ?
      log.info("Got {}", s)
    case SubscribeAck(Subscribe("content", None, `self`)) ?
      log.info("subscribing")
  }
}

Местная часть:

class Publisher extends Actor {
  import DistributedPubSubMediator.Publish
  // activate the extension
  val mediator = DistributedPubSub(context.system).mediator

  def receive = {
    case in: String ?
      val out = in.toUpperCase
      mediator ! Publish("content", out)
  }
}

Актер удаленной части подписывается content topic, и если локальная часть хочет поговорить с удаленным, она может просто публиковать сообщение content topic.

Надеюсь, это даст вам несколько мыслей.

scala, akka, акка-кластер, акка-дистанционный актер,
Похожие вопросы