2016-03-26 13 views
2

Я пытаюсь использовать шаблон pub/sub в кластере. Документация по этому вопросу очень скудная.Akka.Net (C#) Опубликовать сообщение всем участникам кластера

Сценарий, который я искал: 1. Актер подписывается на мероприятие. 2. В любом месте кода публикуйте сообщение всем подписчикам об этом событии в системе актеров, не выбирая участников.

Из «существующей» документации способ использования: DistributedPubSub.Get (Context.System) .Mediator;

Однако, как только я инициирую посредник, я получаю исключение «ассоциация».

  1. Что мне не хватает?
  2. Может ли кто-нибудь указать мне на рабочую демонстрацию?

Благодаря

+0

Вы используете Akka.Serialization.Wire в качестве сериализатора по умолчанию? Вы можете увидеть рабочий пример в [разделе примеров] (https://github.com/akkadotnet/akka.net/tree/dev/src/examples/Cluster/ClusterTools). – Horusiath

+0

Привет, спасибо за ответ. да, я использую провод как сериализатор. предоставленная ссылка не реализует pub/sub. –

ответ

1

Вы действительно хотите отправить одно сообщение все актеров в каждого узла в кластере?

Я новичок в Akka.NET, но если бы я это сделал, я бы попытался создать актера, который слушает кластерные сплетни, чтобы узнать об участвующих узлах и, возможно, записать записи отдельных участников, если это возможно в противном случае найти способ запроса отдельных узлов для присутствующих участников. Когда у вас есть ссылки на этих участников, отправка им сообщений должна быть достаточно прямой.

Не заботясь о встроенном способе обнаружения всех участников кластера, вы можете создать это как часть каждого узла, чтобы назначить актера (возможно, развернутого 1: 1 на узел от маршрутизатора), который поддерживает реестр всех местных актеров. Возможно, ссылки на этих участников могут быть предложены при запросе или этот узел может просто выступать в качестве прокси/шлюза для передачи сообщений местным участникам.

Как правило, если вы говорите о узлах за маршрутизатором, вы должны иметь возможность обернуть ваше сообщение в широковещательном сообщении, чтобы получить предполагаемый эффект для маршрутов.