You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft Graph API 6中配置超时与重试设置?

Microsoft Graph API 6 超时与重试配置方案

Graph API 6.x 不再支持直接注入自定义HttpClient实例,而是通过OkHttpRequestAdapter来配置HTTP相关参数,以下是具体实现方式:

一、超时配置

通过OkHttpClient.Builder直接设置各类超时参数,再将其传入OkHttpRequestAdapter:

  • connectTimeout: 连接目标服务器的超时时间
  • readTimeout: 读取服务器响应的超时时间
  • writeTimeout: 向服务器写入请求的超时时间
  • callTimeout: 整个请求生命周期的总超时时间

二、重试配置

可选择两种方式实现重试:

  1. 使用内置RetryHandler:API提供了默认重试策略,可按需调整参数
  2. 自定义OkHttp拦截器:完全自定义重试逻辑,替代默认行为

完整代码示例

方式1:自定义HttpClient+自定义重试拦截器

// 定义常量(根据实际业务调整)
private static final int MAX_IDLE_CONNECTIONS = 5;
private static final long KEEP_ALIVE_DURATION_MINUTES = 5;
private static final Duration CONNECT_TIMEOUT_DURATION = Duration.ofSeconds(10);
private static final Duration CALL_TIMEOUT_DURATION = Duration.ofMinutes(1);
private static final Duration READ_TIMEOUT_DURATION = Duration.ofSeconds(30);
private static final Duration WRITE_TIMEOUT_DURATION = Duration.ofSeconds(30);

// 1. 构建自定义OkHttpClient
OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .connectionPool(new ConnectionPool(MAX_IDLE_CONNECTIONS, KEEP_ALIVE_DURATION_MINUTES, TimeUnit.MINUTES))
    .connectTimeout(CONNECT_TIMEOUT_DURATION)
    .callTimeout(CALL_TIMEOUT_DURATION)
    .readTimeout(READ_TIMEOUT_DURATION)
    .writeTimeout(WRITE_TIMEOUT_DURATION)
    .retryOnConnectionFailure(false) // 关闭OkHttp默认重试
    .addInterceptor(buildRetryHandlerInterceptor()) // 添加自定义重试拦截器
    .build();

// 2. 创建请求适配器
OkHttpRequestAdapter requestAdapter = new OkHttpRequestAdapter(
    new TokenCredentialAuthenticationProvider(tokenCredential(cred)),
    okHttpClient
);

// 3. 构建GraphServiceClient
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);

方式2:使用内置RetryHandler配置重试

// 配置内置重试策略
RetryHandler retryHandler = new RetryHandler()
    .setMaxRetries(3) // 最大重试次数
    .setDelay(Duration.ofSeconds(1)) // 初始重试延迟
    .setMaxDelay(Duration.ofSeconds(5)) // 最大重试延迟
    .setRetryConditions(RetryCondition.DEFAULT); // 默认重试条件(如5xx错误、网络异常等)

// 构建请求适配器时传入重试处理器
OkHttpRequestAdapter requestAdapter = new OkHttpRequestAdapter(
    new TokenCredentialAuthenticationProvider(tokenCredential(cred)),
    new OkHttpClient.Builder()
        .connectTimeout(Duration.ofSeconds(10))
        .readTimeout(Duration.ofSeconds(30))
        .build(),
    null, // 使用默认序列化器
    retryHandler
);

// 构建GraphServiceClient
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);

内容的提问来源于stack exchange,提问作者Denis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:56:11