首页 > 解决方案 > Azure 服务总线客户端的 RetryPolicy 对象中如何使用 TimeBuffer 属性?

问题描述

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

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

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

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

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

标签: c#azureazureservicebus

解决方案


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 秒。


推荐阅读