我们正在使用 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/