如何使用 MS JAVA SDK for GRAPH API 重试请求?

How to retry requests using MS JAVA SDK for GRAPH API?

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

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

@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();
}

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

核心库中的默认中间件带有默认的 RetryHandler 实现。多亏了 recent fix,它也可以处理节流错误。

从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