Cosmos DB:如何使用TransactionalBatch重试失败

问题描述

我在Cosmos DB中有一些存储过程,希望将它们转换为.NET事务。最近,我看到这篇帖子https://devblogs.microsoft.com/cosmosdb/introducing-transactionalbatch-in-the-net-sdk/涉及了交易支持。我也能够对其进行测试,并且看起来工作正常。

我知道.NET已在其许多受支持的程序包中添加了内置重试逻辑。 TransactionalBatch是否有任何内置的重试策略?重试任何失败的建议方法是什么?上面的帖子正在查看IsSuccessstatusCode。状态失败后是否应该重试?

解决方法

TransactionalBatch是否有任何内置的重试策略?

目前,它不支持内置的重试策略。

重试任何失败的建议方法是什么?

TransactionalBatch描述了一组需要成功或失败的点操作。如果任何操作失败,则会回滚整个事务

因为失败的状态码将是424和409,所以我们不能使用RetryOptions.MaxRetryAttemptsOnThrottledRequests

因此,您可以使用for (int i = 0; i < MaxRetries; i++){}来执行重试逻辑。