我已经设置了以下策略:
// Slack api for postMessage is generally 1 per channel per second.
// Some workspace specific limits may apply.
// We just limit everything to 1 second.
var slackApiRateLimitPerChannelPerSecond = 1;
var rateLimit = Policy.RateLimitAsync(slackApiRateLimitPerChannelPerSecond, TimeSpan.FromSeconds(slackApiRateLimitPerChannelPerSecond),
(retryAfter, _) => retryAfter.Add(TimeSpan.FromSeconds(slackApiRateLimitPerChannelPerSecond)));
这应该:
- 将请求速率限制为1 req/s
- 在速率受限时重试
我无法理解如何将其包装成第二个策略以进行重试...
我可以像这样重试:
try
{
_policy.Execute(...)
}
catch(RateLimitedException ex)
{
// Policy.Retry with ex.RetryAfter
}
但这似乎不正确。
我想再试几次(3次?),以使该方法更具弹性 - 我该怎么做?