Я загружаю один файл на SFTP-сервер с помощью Alpakka, но после того, как файл загружен и я получил ответ об успешном завершении, приемник остается открытым, как его слить?
Я начал с этого:
val sink = Sftp.toPath(path, settings, false)
val source = Source.single(ByteString(data))
source
.viaMat(KillSwitches.single)(Keep.right)
.toMat(sink)(Keep.both).run()
.map(_.wasSuccessful)
Но это заканчивается тем, что вы никогда не покидаете шаг карты. Я попытался добавить переключатель уничтожения, но, похоже, это не дало никакого эффекта (ни с выключением, ни с прерыванием):
val sink = Sftp.toPath(path, settings, false)
val source = Source.single(ByteString(data))
val (killswitch, result) = source
.viaMat(KillSwitches.single)(Keep.right)
.toMat(sink)(Keep.both).run()
result.map {
killswitch.shutdown()
_.wasSuccessful
}
Я делаю что-то принципиально неправильное? Мне нужен только один результат.
ИЗМЕНИТЬ Настройки, отправленные на toPath
:
SftpSettings(InetAddress.getByName(host))
.withCredentials(FtpCredentials.create(amexUsername, amexPassword))
.withStrictHostKeyChecking(false)
Await.result(result, Duration.Inf)
в конце, чтобы заблокировать, пока поток не завершится. Вам не нужен KillSwitch. - person expert   schedule 26.10.2018