Как свойство TimeBuffer используется в объекте RetryPolicy в клиенте служебной шины Azure? - PullRequest
0 голосов
/ 19 декабря 2018

Я прочитал документацию, и все подробности о том, как объект RetryPolicy используется в клиенте очереди служб Azure, понятны мне, кроме одного: свойство TimeBuffer.Определение в документации гласит:

"Буфер времени завершения, связанный с повторной попыткой. Попытки повторной попытки будут отменены, если оставшееся время меньше, чем TimeBuffer."

НоЧто такое «оставшееся время»?Может кто-нибудь привести пример того, как это используется?

Вот как я вижу ситуацию: если запрос не выполняется и ошибка временная, операция будет повторяться до достижения успеха или до достижения MaxRetryCount.В то же время интервалы между попытками будут расти в зависимости от MinimalBackoff и DeltaBackoff до достижения MaximumBackoff.С этого момента интервалы между попытками будут постоянными и равными MaximumBackoff.Как TimeBuffer используется в этом сценарии?

Еще одна вещь, которую я забыл, поэтому я отредактировал вопрос.Как установить DeltaBackoff и TimeBuffer, если только конструктор, который позволяет устанавливать эти значения, является устаревшим, а свойство DeltaBackoff не имеет установщика и доступно только для чтения?

1 Ответ

0 голосов
/ 01 января 2019

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

Здесь "оставшееся время "после 2-й попытки составило бы 29,7 с и 29,1 с после 3-й попытки.

...