Используйте потоки akka или акторы akka для создания динамического конвейера - PullRequest
0 голосов
/ 02 июля 2018

Мне нужно реализовать процесс, который опрашивает сообщения из очереди и перенаправляет данные в конечную точку http. Обычно я думаю, что лучшим подходом для этого будет использование потоков Akka (с akka http), потому что он обрабатывает противодавление и т. Д. Для вас. Проблема заключается в том, что мне нужно создать несколько таких конвейеров по требованию во время выполнения (на основе HTTP-вызова) с различными конфигурациями. Другое требование состоит в том, что должна быть возможность динамически остановить один из этих конвейеров во время выполнения и запустить его с другой конфигурацией.

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

Как вы думаете, было бы возможно создать это через потоки akka или это было бы хлопотно?

Заранее спасибо!

1 Ответ

0 голосов
/ 09 июля 2018

Вы не можете перенаправить поток, как только он будет материализован и запущен. Но так как вы конфигурируете потоки программно, очень удобно динамически определять новые потоки и запускать их. Все зависит от конкретного варианта использования, но я бы выбрал единственного координатора, который получает сообщения очереди и отправляет их в данный поток. Тот же координатор будет получать запросы на изменение конфигурации, чтобы настраивать новые потоки, удалять старые и т. Д.

Не делай так, чтобы актеры вручную подключались. Трудно следовать и поддерживать.

...