我有一些旧代码,使用EnterpriseLibrary.TransientFaultHandling包对Azure服务总线主题进行了重试:
<form class="form-horizontal form-label-left"method="POST" action="{% url 'paperCustomization_submission'%}">
<div class="col-md-7 col-sm-9 col-xs-12">
{%for question_type in questions_type%}
<div class="checkbox" id="checkbox-question" >
<label>
<input type="checkbox" id="question_type_id" value="{{question_type.question_type}}" onclick="function1();"class="flat" name="checkbox_question"> {{question_type.question_type}}
</label>
</div>
{%endfor%}
</div>
该代码是几年前编写的,可能摘自博客文章或某些Microsoft文档。在检查当今的var bus = TopicClient.CreateFromConnectionString(con, topic);
await new RetryPolicy<ServiceBusTransientErrorDetectionStrategy>(
new FixedInterval(3, TimeSpan.FromMilliseconds(200)))
.ExecuteAsync(() =>
await bus.SendAsync(msg)
...
时,它包含一个名为TopicClient
的属性,默认情况下将其设置为RetryPolicy
的实例,并具有重试次数,最大超时等默认值。< / p>
在我看来,RetryExponential
上的默认重试策略看起来不错。使用TransientFaultHandling将其包装在重试中是否有任何好处?如果我想要更多的重试或其他重试策略,则可以直接在主题客户端上直接配置其他重试策略,而不必将两个重试策略包装在一起。
答案 0 :(得分:1)
我可以直接在主题客户端上直接配置另一个重试策略,而不必将两个重试策略包装在一起。
这就是使用Azure Service Bus .NET客户端创建的RetryPolicy
能够重新配置它以满足您的需求的原因。您不必引入第三者重试,除非在内置重试策略不能满足您需要的情况下确实需要它。