首页 > 解决方案 > 有没有办法在 .NET Core ServiceBus 客户端中为 RetryExponential 策略设置 DeltaBackoff?

问题描述

.NET Standard Azure ServiceBus 客户端似乎没有设置DeltaBackoff参数的可能性。以前是可能的,根据文档,它应该仍然是可能的。我看到有一个内部构造函数链接到公共构造函数,并且从(3 秒)DeltaBackoff传递值。Constants.DefaultRetryDeltaBackoff

有正当理由不再公开吗?另外,有没有办法在SubscriptionClient不设置的情况下使用 2/4/8 分钟延迟实现指数重试DeltaBackoff

标签: c#.net-coreazureservicebusazure-servicebus-topics

解决方案


RetryExponential除了使用反射通过其内部构造函数进行实例化之外,找不到其他方法:

var internalCtor = typeof(RetryExponential)
    .GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)
    .Single();

var instance = (RetryExponential)internalCtor.Invoke(
    new object[] { TimeSpan.FromMinutes(2), TimeSpan.FromMinutes(8), TimeSpan.FromMinutes(2), 3 }
    );

Console.WriteLine(instance.DeltaBackoff); // 00:02:00

这是存储库上的问题,如果有人想跟踪它。


推荐阅读