首页 > 解决方案 > 如何使用 MS JAVA SDK for GRAPH API 重试请求?

问题描述

我是使用 Graph API 的初学者,目前正在尝试处理我的代码中与节流相关的错误。在 sdk 的 github 页面中有一个 RetryHandler 类。但我似乎找不到示例请求的代码实现。有没有我可以检查和尝试的例子?

作为一个例子,我可以在下面给出我自己的代码。

@Override
public JsonObject getUserList(String accessToken){
    LOGGER.trace("Querying directRoutingEnabled users");
    final String selectQuery = "mail,givenName,surname,displayName";
    final List<Option> requestOptions = new LinkedList<>();
    final String filterQuery = createFilterQuery();

    requestOptions.add(new HeaderOption(CONSISTENCY_LEVEL, EVENTUAL));
    requestOptions.add(new QueryOption(SELECT, selectQuery));
    requestOptions.add(new QueryOption(COUNT, true));
    requestOptions.add(new QueryOption(FILTER, filterQuery));

    IGraphServiceClient graphServiceClient = GraphServiceClient.builder().authenticationProvider(new SimpleAuthProvider(accessToken)).buildClient();
    IUserCollectionRequest request = graphServiceClient
            .users()
            .buildRequest(requestOptions);
    IUserCollectionPage users = request.get();
    return users.getRawObject();
}

我如何使用 Graph SDK for Java 使用重试机制(也可能还有错误处理)覆盖此代码?.

标签: azure-active-directorymicrosoft-graph-apimicrosoft-graph-sdks

解决方案


核心库中的默认中间件带有默认的 RetryHandler 实现。并且由于最近的修复,它也适用于限制错误。

从 SDK V3 开始,您可以使用自定义拦截器指定自定义 OkHttpClient。可在此处找到自定义指南:https ://docs.microsoft.com/en-us/graph/sdks/customize-client?tabs=java 。

默认 RetryHandler 实现:https ://github.com/microsoftgraph/msgraph-sdk-java-core/blob/dev/src/main/java/com/microsoft/graph/httpcore/RetryHandler.java

默认 RetryHandler 设计:https ://microsoftgraph.github.io/msgraph-sdk-design/middleware/RetryHandler.html


推荐阅读