【发布时间】:2019-06-28 08:52:29
【问题描述】:
我在一篇关于 HttpClient/DocumentClient 的文章中读到,最好的做法是为应用程序创建一个单例并将其注入到对象中,这样就不会因继续重新创建而耗尽底层资源。这是如何工作的?如果一个 HttpClient 被多个线程访问并同时调用可能不同的端点,我看不出这是如何工作的。
我读过这个
https://medium.com/@nuno.caneco/c-httpclient-should-not-be-disposed-or-should-it-45d2a8f568bc
感兴趣。如果我有一个使用 DocumentClient 调用 cosmosDb 的 Azure 函数,我应该如何使用 DocumentClient?应该是静态实例吗?
我的 Azure 函数是这样设置的。我假设每个请求都会创建一个新的 DocmentClient 实例,在高负载下可能会导致资源问题。
[FunctionName("MyGetFunc")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[CosmosDB("ct","ops", ConnectionStringSetting ="cosmosConn")]
DocumentClient docClient,
ILogger log)
//use docClient here...
{
【问题讨论】:
-
HttpClient 是线程安全的。除此之外,为什么不调用不同的 URL? HttpClient 不是 HttpWebRequest 只能用于一个 URL,实际上是一个调用。
标签: c# httpclient azure-functions azure-cosmosdb