Вопрос про кластерные маршрутизаторы (стратегия = round-robin-group). Я не могу заставить его выполнять циклический перебор между моими маршрутами в кластерной настройке.
Моя установка выглядит следующим образом: узел A запускает свою систему акторов в контексте ASP.NET. Там у меня есть контроллер API, который разговаривает с актором A1, а этот актор затем общается с моим маршрутизатором. Затем этот маршрутизатор должен циклически перебирать сообщения по своим маршрутам, созданным на узле B (используя рабочую роль).
Узел B создает свою систему акторов в контексте службы Windows. Я дважды проверил, что все мои маршруты на узле B действительно созданы (сделано при запуске службы).
Чтобы проверить, какой из маршрутов получает сообщение, отправленное от маршрутизатора в узле A, я просто записываю консоль Self.Path в свой дескриптор получения. По какой-то причине один и тот же маршрут получает все сообщения, и они не распределяются по маршрутам.
См. конфигурацию на узле A ниже.
/workerRouter {
router = round-robin-group
routees.paths = [
"/user/workers/worker0",
"/user/workers/worker1",
"/user/workers/worker2",
"/user/workers/worker3",
"/user/workers/worker4",
"/user/workers/worker5",
"/user/workers/worker6",
"/user/workers/worker7",
"/user/workers/worker8",
"/user/workers/worker9"
]
cluster {
enabled = on
use-role = worker
}
}
Маршрутизатор создается с помощью следующего кода:
ActorSystem.ActorOf(Props.Empty.WithRouter(FromConfig.Instance), "workerRouter");
Использование версий:
- Акка 1.1.0
- Акка Кластер 1.1.0
- Акка.Удаленный 1.1.0