我们正在使用 azure 搜索,需要实现重试策略以及存储失败文档的 ID,如所述。

是否有关于如何在 Azure 搜索中实现 RetryPolicy 策略的文档/示例。

谢谢

最佳答案

这是我使用的:

 private async Task<DocumentIndexResult> IndexWithExponentialBackoffAsync(IndexBatch<IndexModel> indexBatch)
 {
      return await Policy
           .Handle<IndexBatchException>()
           .WaitAndRetryAsync(5, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (ex, span) =>
           {
                indexBatch = ((IndexBatchException)ex).FindFailedActionsToRetry(indexBatch, x => x.Id);
           })
           .ExecuteAsync(async () => await _searchClient.IndexAsync(indexBatch));
 }

它使用 Polly library 来处理指数退避。在这种情况下,我使用一个模型 IndexModel ,它有一个名为 Id 的 id 字段。
如果您想记录或存储失败尝试的 ID,您可以在 WaitAndRetryAsync 函数中执行此操作,例如
((IndexBatchException)ex)ex.IndexingResults.Where(r => !r.Succeeded).Select(r => r.Key).<Do something here>

关于azure-cognitive-search - Azure 搜索重试策略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40567172/

10-12 23:15