Как я могу опубликовать или подписаться на материализованный график потока Akka Stream?
Я играю с Akka Stream и пытаюсь понять его гибкость после материализации.
Один из способов сделать это - использовать API реактивных потоков низкого уровня: http://doc.akka.io/api/akka-stream-and-http-experimental/1.0-M3/
Однако вам необходимо определить эти пункты для публикации или подписки. Есть ли способ опубликовать или подписаться на произвольный материализованный узел потокового графа? Это должно быть возможно, так как материализованный поток представляет собой не что иное, как набор актеров.
Например: сначала разверните потоковый граф 1: A ~> B ~> C
Затем разверните потоковый граф 2 и 3: D ~> B B ~> E
1 ответ
Невозможно полностью динамически изменять структуры потоковых конвейеров обработки. Мы предусматриваем определенные виды стадий динамической обработки (например, "разветвление рабочих, которые могут приходить и уходить"), но в целом потоки и конвейеры потоковой обработки должны иметь определенную компоновку перед материализацией. Это также имеет смысл из-за механизмов противодавления, используемых в потоках akka и реактивных потоках в целом - им нужно тщательно управлять внутри, и разрешение произвольных взаимодействий просто не то, для чего предназначена эта модель потоков.
Если вы хотите произвольного взаимодействия, актеры должны подойти вам лучше. Если вы хотите иметь элемент обработки, который может принимать внешние сигналы для управления конвейером обработки, он будет специальным элементом внутри этого материализованного конвейера, предназначенным для приема этих сигналов, а не просто каким-либо элементом.
С тех пор как я опубликовал этот пост, мы добавили некоторые динамические функции, которые могут быть интересны людям, которые попадают на этот сайт, особенно MergeHub и BroadcastHub.
Обратите внимание, что стабильная версия Akka Streams является 2.4.16
,