c# - 如何在 Azure 服务总线客户端的 RetryPolicy 对象中使用 TimeBuffer 属性?

标签 c# azure azureservicebus

我已阅读文档,并且关于如何在 Azure 服务总线队列客户端中使用 RetryPolicy 对象的所有详细信息对我来说都很清楚,除了一个:TimeBuffer 属性。 文档中的定义说:

"The termination time buffer associated with the retry. Retry attempts will be abandoned if the remaining time is less than TimeBuffer."

但是,“剩余时间”是多少?有人可以举例说明如何使用它吗?

以下是我对这种情况的看法:如果请求失败并且错误是暂时的,则将重复操作,直到成功或达到 MaxRetryCount。同时,尝试之间的间隔将根据 MinimalBackoff 和 DeltaBackoff 增长,直到达到 MaximumBackoff。从那时起,尝试之间的间隔将是恒定的并且等于 MaximumBackoff。在这个场景中TimeBuffer是如何使用的?

还有一件事我忘记了,所以我编辑了这个问题。当仅允许设置这些值的构造函数已过时,并且 DeltaBackoff 属性没有 setter 且为只读时,如何设置 DeltaBackoff 和 TimeBuffer?

最佳答案

TerminationTimeBuffer 是一个属性,用于限制操作完成的总时间。

与重试相关的终止时间缓冲区。如果剩余时间小于TimeBuffer,重试尝试将被放弃。

考虑具有以下配置的场景

MinimumBackoff = 0  
MaximumBackoff = 30 sec  
DeltaBackoff = 300 msec  
TimeBuffer = 300 msec   
MaxRetryCount = 2

它的工作原理是

Attempt 1: Delay 0 sec   
Attempt 2: Delay ~300 msec  
Attempt 3: Delay ~900 msec

这里,第二次尝试后的“剩余时间”为 29.7 秒,第三次尝试后的“剩余时间”为 29.1 秒。

关于c# - 如何在 Azure 服务总线客户端的 RetryPolicy 对象中使用 TimeBuffer 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857385/

相关文章:

asp.net - Azure应用程序服务-如何使Always On适用于特定应用程序?

c# - 仅在 Azure 应用服务中出现错误 : Object reference not set to an instance of an object

java - QueueClient 中长时间不活动且频繁出现 MessageLockLostException

c# - Convert.FromBase64String c# 上的 FormatException

c# - 异步函数返回异步元数据(包括结果)而不仅仅是结果

c# - 引发订阅的异步事件后,对象会自动处理吗?

asp.net-core - .NET Core Azure servicebusqueue 消息数

C# 泛型 & 不会发疯

javascript - Azure DevOps 在部署之前更新代码内的变量

Azure IoT 将文件上传到 Blob