2016-12-14 9 views
0

У меня есть actorsystem, который имеет 3 актеров и перечислены нижеКак ограничить актер в кластерный Akka actorsystem выполнить только в одном узле

  1. RMQreaderActor - Это актер, который читает сообщения из RMQ и говорит ниже двух актеров, чтобы преобразовать сообщение и процесс его
  2. ConverterActor
  3. ProcessorActor

Мое требование к кластеру actorsystem в 4-х узлов, но я не хотите, чтобы RMQreaderactor во всех узлах считывал сообщения из очереди. Только один узел должен прочитать сообщение и передать другим участникам процесс.

Примечание: Если я RMQreaderactor всех узлов, чтобы читать сообщения из очереди, то это вызывает дубликата чтения (так как я не выдавшего Ack, как только я прочитал)

Не могли бы вы, пожалуйста, помогите я с моим требованием

ответ

0

Мое предложение не идет по этому пути! Так как вы хотите, чтобы иметь кластер 4 узлов лучше воспользоваться преимуществами всех из них от нескольких причин:

  • в случае, когда узел выходит из строя, вы не имеете никакой избыточности, так SPOF
  • если некоторые другие действия создают давление в этом узле, производительность системы влияет и у вас есть узкое место

вы можете оставить все узлы для запуска RMQreaderActor и так как вы используете (кролик мэк) Unacked тзд не будет выбран путем некоторый другой потребитель (другой экземпляр RMQreaderActor из другого узла) - если только что-то, что я не получаю у вашего потребителя.

Если вы не убедите вас, пожалуйста, прочитайте (роли ролей кластера, синглтоны и субъекты прокси). http://doc.akka.io/docs/akka/current/scala/cluster-singleton.html - здесь вы видите, как иметь синглтон-актер (единственный экземпляр актера во всех узлах кластера).