c# - Azure 服务总线客户端的 RetryPolicy 对象中如何使用 TimeBuffer 属性?
问题描述
我已阅读文档,关于如何在 Azure 服务总线队列客户端中使用 RetryPolicy 对象的所有详细信息对我来说都很清楚,除了一个:TimeBuffer 属性。文档中的定义说:
“与重试关联的终止时间缓冲区。如果剩余时间小于 TimeBuffer,将放弃重试尝试。”
但是,“剩余时间”是多少?有人可以举例说明这是如何使用的吗?
以下是我对这种情况的看法:如果请求失败并且错误是暂时的,则将重复操作,直到成功或达到 MaxRetryCount。同时,尝试之间的间隔将根据 MinimalBackoff 和 DeltaBackoff 增加,直到达到 MaximumBackoff。从那时起,尝试之间的间隔将保持不变并等于MaximumBackoff。在这种情况下如何使用 TimeBuffer?
我还忘了一件事,所以我编辑了这个问题。当只有允许设置这些值的构造函数已过时并且 DeltaBackoff 属性没有设置器并且是只读的时,如何设置 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 秒。
推荐阅读
- node.js - 当我登录时,npm publish 要求我登录
- html - 加载 HTML5 视频块实际上是如何工作的?
- android-studio - 如何删除默认标记弹出信息窗口
- python - 单元测试中的递归 AssertCountEqual
- nfc - 使用 SLRC400 或 CLRC632 NFC ISO15693 读卡器 IC 的示例代码?
- javascript - Redis Uncaught TypeError: Cannot read properties of undefined (reading 'charCodeAt')
- ssh - sshd_config 中的 ForceCommand 正在阻止 SCP/SFTP
- hadoop - HADOOP“ssh:无法解析主机名
: nodename 或 servname 提供,或未知" - mysql - 节点Mysql更新行使用2个条件传递2个参数(ID)
- sql - sql where 子句条件没有按预期工作。只需要特定的标签记录