我有一个用 akka-http 编写的 REST 服务,它公开了一个/fire端点。当该端点被调用时,我的服务应该发送一个文件,通常约为 50MB 到不同的服务。但是/fire端点应该立即返回给调用者,并以即发即弃的方式继续异步发送文件。
我的实现看起来像这样
path("fire") {
post { request: FireRequest =>
complete {
sendFile(request.path)
StatusCodes.OK
}
}
}
}
def sendFile(path: String): Future[Unit] = Future {
// send the large file to another service
}
我测试了它,它工作正常。
但是,当使用 ASP.NET 实现类似的行为时,我需要使用第三方框架(Hangfire)来处理异步任务,因为完成请求生成的线程最终会被杀死。
我的问题是:在我的 akka-http sendFile中保证运行直到成功/失败完成,否则会出现运行它的线程将被杀死的情况?