Должен ли я повторить попытку через Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling - PullRequest
0 голосов
/ 29 октября 2018

У меня есть старый код, реализующий повторную попытку к теме Azure Service Bus с использованием пакета EnterpriseLibrary.TransientFaultHandling :

var bus = TopicClient.CreateFromConnectionString(con, topic);
await new RetryPolicy<ServiceBusTransientErrorDetectionStrategy>(
    new FixedInterval(3, TimeSpan.FromMilliseconds(200)))
    .ExecuteAsync(() =>
        await bus.SendAsync(msg)
        ...

Код написан несколько лет назад и, вероятно, взят из поста в блоге или какой-либо документации Microsoft. При проверке сегодняшнего TopicClient он содержит свойство с именем RetryPolicy, которое по умолчанию установлено на экземпляр RetryExponential с некоторыми значениями по умолчанию для числа повторных попыток, максимального времени ожидания и т. Д.

На мой взгляд, стратегия повторения по умолчанию на TopicClient выглядит хорошо. Есть ли какие-либо преимущества в обертывании этого при повторных попытках с использованием TransientFaultHandling? Если мне нужно больше попыток или другая стратегия повторения, я могу просто настроить другую стратегию повторения непосредственно на клиенте темы, вместо того, чтобы объединить две стратегии повторения вместе.

1 Ответ

0 голосов
/ 29 октября 2018

Я могу просто настроить другую стратегию повторения непосредственно на клиенте темы, вместо того, чтобы объединять две стратегии повторения вместе.

Именно поэтому RetryPolicy, найденный с помощью .NET-клиента Azure Service Bus, был создан с возможностью перенастроить его в соответствии с вашими потребностями. Вам не нужно вводить стороннюю повторную попытку, если только она вам действительно не нужна для случаев, когда встроенная политика повторных попыток не делает то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...