12345678910111213141516171819202122232425 |
- namespace Houdar.Core.Util.Common
- {
- public static class FlowControlUtil
- {
- public static int CalculateFlowControlTimeMilliseconds(int pendingCount, int thresholdCount, int stepPercent, int baseWaitMilliseconds, int maxWaitMilliseconds = 10000)
- {
- var exceedCount = pendingCount - thresholdCount;
- exceedCount = exceedCount <= 0 ? 1 : exceedCount;
- var stepCount = stepPercent * thresholdCount / 100;
- stepCount = stepCount <= 0 ? 1 : stepCount;
- var times = exceedCount / stepCount;
- times = times <= 0 ? 1 : times;
- var waitMilliseconds = times * baseWaitMilliseconds;
- if (waitMilliseconds > maxWaitMilliseconds)
- {
- return maxWaitMilliseconds;
- }
- return waitMilliseconds;
- }
- }
- }
|