.NET 8 Ограничитель параллелизма для различных вызовов RPCC#

Место общения программистов C#
Ответить
Anonymous
 .NET 8 Ограничитель параллелизма для различных вызовов RPC

Сообщение Anonymous »

У меня есть служба gRPC, реализованная с использованием C# .NET8.
Я устанавливаю ограничитель параллелизма следующим образом:

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

services.AddRateLimiter(options =>
{

options.AddConcurrencyLimiter(policyName: concurrencyPolicyName, options =>
{
options.PermitLimit = 160;
options.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
options.QueueLimit = 160;
});

options.OnRejected = async (context, token) =>
{
context.HttpContext.Response.StatusCode = 503;
await context.HttpContext.Response.WriteAsync("The service is currently handling too many requests. Please try again later... ", cancellationToken: token);
};
});
.
.
.
endpoints.MapGrpcService().RequireRateLimiting(concurrencyPolicyName);
В файле прототипа для вызовов RPC я получил одну службу с двумя разными вызовами RPC: один — Set, а другой — Get:

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

service My_Service {
rpc Get (GetMessage) returns (GetReply);
rpc Set (SetMessage) returns (SetReply);
}
А на стороне C# я переопределяю базовый класс службы с помощью класса MyService и реализую Set и Get.Как я уже показывал ранее, я знаю, как установить ограничитель скорости для всего сервиса с помощью строки:

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

endpoints.MapGrpcService().RequireRateLimiting(concurrencyPolicyName);
Есть ли способ добавить другую политику ограничения для Set и Get вместо установки политики для всей службы?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -rpc-calls
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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