Обработка HTTPClient выполнения нескольких запросов в огне и забыть - PullRequest
0 голосов
/ 04 мая 2019

Я должен сделать несколько Http-запросов (несколько сотен или может быть больше) и не ждать ни одного ответа, как с SLA. Не дожидаясь ответа, мне нужно отправить ответ от моего веб-API (перед выполнением упомянутых нескольких HTTP-запросов я получаю данные из другого API и должен вернуться обратно).

Я осмотрелся и нашел реализацию "запусти и забудь", которая не ждет ответа. Я не уверен, что это правильный путь, и, поскольку я возвращаюсь, не дожидаясь параллельного запуска и забывая запросы, как будет избавляться HttpClient?

HttpClient client = new HttpClient();

var CompositeResponse = client.GetAsync(_SOMEURL);

List<MEDLogresp> sortedmeds =   MEDLogresps.OrderBy(x => x.rxId).ThenBy(y => y.recordActionType);

Task.Run(() => Parallel.ForEach(sortedmeds, ele => clientMED.PostAsync(URL , new StringContent(JsonConvert.SerializeObject(ele), Encoding.UTF8, "application/json"))));

return ResponseMessage(Request.CreateResponse<CompositeResponse>(HttpStatusCode.OK, compositeResponse));

1 Ответ

0 голосов
/ 05 мая 2019

так как я возвращаюсь, не дожидаясь параллельного огня и забудь запросы, как избавится httpclient?

Вы можете использовать один общий статический экземпляр HttpClient для жизни вашего приложения и никогда Dispose() его. Можно использовать один и тот же HttpClient одновременно из нескольких потоков.

...