在akka http流请求中使用KillSwitch
我正在使用Akka的HTTP客户端与无限流HTTP端点建立连接。我很难让客户端关闭HTTP服务器的上游 这是我的代码(在akka http流请求中使用KillSwitch,http,akka,akka-stream,Http,Akka,Akka Stream,我正在使用Akka的HTTP客户端与无限流HTTP端点建立连接。我很难让客户端关闭HTTP服务器的上游 这是我的代码(StreamRequest()。stream返回一个Source[T,Any]。它由Http()生成。outgoingConnectionHttps然后是流[HttpResponse,T,NotUsed]将HttpResponse转换为T流: 那我有 tFuture.onComplete { _ => info(s"Shutting down the connectio
StreamRequest()。stream
返回一个Source[T,Any]
。它由Http()生成。outgoingConnectionHttps
然后是流[HttpResponse,T,NotUsed]
将HttpResponse
转换为T
流:
那我有
tFuture.onComplete { _ =>
info(s"Shutting down the connection")
killSwitch.shutdown()
}
当我运行代码时,我会看到“正在关闭连接”日志消息,但服务器会告诉我,我仍然处于连接状态。它仅在JVM退出时断开连接
你知道我做错了什么,或者我应该在这里做些什么吗
谢谢 我怀疑您应该在
t未来
完成时调用Http()。关闭所有连接池()
。池不会关闭连接,因为它们可以被不同的流重用,所以当流完成时,它不会关闭池。您在日志中看到的关闭连接可能是因为其中一个连接触发了空闲超时
tFuture.onComplete { _ =>
info(s"Shutting down the connection")
killSwitch.shutdown()
}