У меня есть следующий путь для потока -
kafkaStream[message] ->
kafkaStream[message] -> mergedKafkaStream[message] -> stream[EnrichedMessage] -> I/O
kafkaStream[message] ->
Я не уверен, как написать это в потоке akka. Я пробовал следовать (псевдо).
KafkaStream extends ActorPublisher[message] {
}
IOHandler extends ActorSubscriber {
}
k1, k2, k3 — издатели потоков kafka
f = Flow[message].map(_.enrichMessage)
FlowGraph { b =>
k1 ~> merge
k2 ~> merge
k3 ~> merge
merge ~> f ~> ioHandlerSink
}
Таким образом, я подключаю издателя к приемнику. Но здесь проблема, которую я хочу решить, это медленный ввод-вывод. Актер IOHandler очень медленно обрабатывает сообщения, поэтому, как я могу иметь несколько IOHandler, и я должен иметь возможность распределять задачи. И я также хочу поддерживать обратное давление, чтобы не использовать огонь и забыть об использовании маршрутизатора.
Я очень новичок в akka stream, поэтому предложите мне выход.
Спасибо