Здесь нужно обратить внимание на две вещи: вы используете Sink
(это конец определения потока) и материализованные значения
Sink.actorRef
возвращает Sink<In,NotUsed>
, поэтому вы не можете просто узнать информацию о завершении потока из того, что у вас есть (потому что материализованное значение равно NotUsed
в вашем случае). Более того, вы не можете использовать другой приемник, который предоставляет эту информацию (например, Sink.ignore
, материализованное значение которого дает вам Future
о завершении потока), потому что в общем случае поток имеет один приемник (конечно, Вы можете использовать Flow.alsoToMat
, но существует лучший подход)
Вы можете использовать Flow.watchTermination
в потоке непосредственно перед последним Sink
, который сообщит вам о вашем состоянии в восходящем направлении. Вероятно, в этом есть смысл, потому что вы используете Sink.actorRef
в форме «отправь и забудь».
Я не знаю вашего полного использования, но на всякий случай, возможно, вы найдете Flow.ask
полезным. Он также отправляет сообщение актеру, но также ожидает ответа актера.