#c# #grpc
#c# #grpc
Вопрос:
Я хочу иметь возможность отображать все вызовы gRPC для некоторых служб в другой набор служб с тем же интерфейсом на C #. Я думаю о написании метода расширения для GrpcClientFactory.createClient, чтобы вернуть класс, который выполнял бы два вызова параллельно. Результат от зеркала не нужен, поэтому я бы вернул результат с первого вызова. Является ли это наилучшим подходом к задаче или можно сделать это лучше?
Ответ №1:
В значительной степени то, что вы описали, в вашем случае вы можете использовать IHttpClientFactory для создания http-клиентов
public class GrpResponse
{
public string client { get; set; }
public HttpResponseMessage response { get; set; }
}
private async void ExecuteGrpRequest()
{
var payLoad = new HttpRequestMessage();
var grpTasks = new List<Task<GrpResponse>>
{
SendAsyc("real", payLoad),
SendAsyc("mock", payLoad)
};
var responses = await Task.WhenAll(grpTasks);
}
private async Task<GrpResponse> SendAsyc(string client, HttpRequestMessage message )
{
// IHttpClientFactory is _httpClientFacotry; injected from ctor
var httpClient = _httpClientFacotry.CreateClient(client);
return new GrpResponse
{
client = client,
response = await httpClient.SendAsync(new HttpRequestMessage())
};
}