Akka-http HttpEntity.toStrict
是一种在需要完整正文供以后处理时使用实体的方法,但它没有没有超时参数的变体。
使用entity.dataBytes.runReduce(_ ++ _)
并且没有超时的身体很容易。但后果是什么呢?
问题#1
如果HttpEntity.toStrict
超时,akka-http会立即关闭连接吗?或者还在消耗身体丢弃数据?或者是什么?
问题#2
如果在没有超时的情况下使用正文(如上面的代码),并且连接“挂起”,akka-http配置中是否有任何适用的超时参数?对于客户?对于服务器?如果在启动主体之前连接“挂起”,是否有任何适用的超时参数?
问题#3
如果没有全局超时,为什么HttpEntity.discardBytes
没有类似的超时参数?
答案 0 :(得分:0)
如果HttpEntity.toStrict超时,akka-http会立即关闭连接吗?或者还在消耗身体丢弃数据?或者是什么?
关闭连接AFAIR,因为它被视为在流中传播的失败(以及取消)。
如果正文被消耗而没有超时(如上面的代码),并且连接"挂起",akka-http配置中是否有任何适用的超时参数?对于客户?对于服务器?如果连接"挂起"在启动正文之前,是否有任何适用的超时参数?
文档中有关于超时的完整部分:http://doc.akka.io/docs/akka-http/current/scala/http/common/timeouts.html 这些包括空闲超时,当连接和#34;挂起时会触发。
如果没有全局超时,为什么HttpEntity.discardBytes没有类似的超时参数?
存在全局安全超时,最明显的是请求超时和空闲超时。所有文档都记录在文档中。 http://doc.akka.io/docs/akka-http/current/scala/http/common/timeouts.html
discardBytes
当你完全不关心这个实体时,实际上只是方便。我想我们可以添加一个超时超载,这是第一次有人要求它说实话。无论如何,您都可以使用Akka Streams超时阶段轻松添加超时。