咨询AkkaHttpClient中Socket Timeout的等价默认配置方法
Akka HttpClient 配置等价 Socket Timeout 的方法
Apache HttpClient 中的 Socket Timeout(建立连接后等待数据的最大空闲时长),在 Akka HttpClient 里对应的是 idle-timeout 配置,可以通过两种方式设置:
1. 全局默认配置
在 Akka 的配置文件(如 application.conf)中添加全局默认的空闲超时:
akka.http.client.idle-timeout = 10s
这个配置会作用于所有使用该客户端发出的请求,对应 Socket Timeout 的功能——当连接建立后,若连续超过指定时长没有数据包传输,连接就会被关闭。
2. 单个请求级配置
如果需要为特定请求单独设置超时,可通过请求属性进行配置:
Scala 示例
import akka.http.scaladsl.model.{HttpRequest, AttributeKeys} import scala.concurrent.duration._ val request = HttpRequest(uri = "https://example.com") .withAttributes(AttributeKeys.idleTimeout(15.seconds))
Java 示例
import akka.http.javadsl.model.HttpRequest; import akka.http.javadsl.model.AttributeKeys; import java.time.Duration; HttpRequest request = HttpRequest.create("https://example.com") .addAttribute(AttributeKeys.idleTimeout(), Duration.ofSeconds(15));
额外补充对应关系:
- Akka 的
connecting-timeout对应 Apache HttpClient 的 Connection Timeout(与主机建立连接的超时) - Apache 的 ConnectionRequestTimeout(从连接池获取连接的超时),在 Akka 中对应配置
akka.http.client.pool.connection-acquisition-timeout
内容的提问来源于stack exchange,提问作者Arya
相关产品推荐
相关产品推荐

