Как я могу опубликовать материализованный граф потоков Akka Stream или подписаться на него?

Я играю с Akka Stream и пытаюсь понять его гибкость после материализации.

Один из способов сделать это — использовать низкоуровневый API реактивных потоков: http://doc.akka.io/api/akka-stream-and-http-experimental/1.0-M3/#akka.stream.scaladsl.PublisherSource

Однако вам необходимо определить эти точки для публикации или подписки. Есть ли способ опубликовать или подписаться на произвольный материализованный узел потокового графа? Это должно быть возможно, поскольку материализованный потоковый граф — не что иное, как набор акторов.

Например: сначала разверните блок-граф 1: A ~> B ~> C

Затем разверните блок-граф 2 и 3: D ~> B B ~> E


person Ruurtjan Pul    schedule 17.02.2015    source источник


Ответы (1)


Невозможно полностью динамически изменять структуру конвейеров потоковой обработки. Мы предвидим определенные этапы динамической обработки (например, «разветвление рабочих процессов, которые могут приходить и уходить»), но в целом потоки и конвейеры потоковой обработки должны иметь определенную структуру до материализации. Это также имеет смысл из-за механизмов обратного давления, используемых в akka-streams и reactive-streams в целом. необходимо тщательно управлять внутренними процессами, и допущение произвольных взаимодействий — это не то, для чего предназначена эта потоковая модель.

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


Поскольку я опубликовал этот пост, мы добавили некоторые динамические функции, которые могут быть интересны людям, которые заходят на этот сайт, в первую очередь MergeHub и BroadcastHub

Обратите внимание, что на момент написания статьи стабильной версией Akka Streams является 2.4.16.

person Konrad 'ktoso' Malawski    schedule 17.02.2015