Как сохранить токены RateLimiter?C#

Место общения программистов C#
Anonymous
Как сохранить токены RateLimiter?

Сообщение Anonymous »

Я использую .Net RateLimiting и, в частности, TokenBucketRateLimiter. Пример:

Код: Выделить всё

services.AddRateLimiter(limiterOptions =>
{
limiterOptions.AddPolicy(userPolicyName, context =>
{
string username = Utils.getUsername(context);
return RateLimitPartition.GetTokenBucketLimiter
(username , _ =>
new TokenBucketRateLimiterOptions
{
TokenLimit = myOptions.TokenLimit,
QueueProcessingOrder = QueueProcessingOrder.OldestFirst,
QueueLimit = 0,
ReplenishmentPeriod = TimeSpan.FromDays(myOptions.ReplenishmentPeriod),
TokensPerPeriod = myOptions.ReplenishmentPeriod,
AutoReplenishment = myOptions.AutoReplenishment
});
});
});
Это работает, но не сохраняется при перезапуске службы (токены сбрасываются при каждом перезапуске службы). Судя по тому, что я смог найти, он использует внутреннее хранилище для токенов.
Как изменить хранилище, используемое для токенов? Я бы предпочел использовать postgres для обеспечения устойчивости, если это возможно, но подойдет любой вид сохранения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ter-tokens

Вернуться в «C#»