C# Azure通知中心静态实例或重新创建

C# Azure通知中心静态实例或重新创建,c#,azure,push-notification,azure-notificationhub,C#,Azure,Push Notification,Azure Notificationhub,使用c#Azure通知中心客户端的正确方法是什么 我们在一个使用率非常高的服务器上使用它,每天发送数百万次推送 我想知道我们是应该每次重新创建NotificationHubClient,还是应该保留它的一个静态/单例实例,然后每次都重用它 /// <summary> /// Get refence to the azure hub /// </summary> /// <returns></returns>

使用c#Azure通知中心客户端的正确方法是什么

我们在一个使用率非常高的服务器上使用它,每天发送数百万次推送

我想知道我们是应该每次重新创建
NotificationHubClient
,还是应该保留它的一个静态/单例实例,然后每次都重用它

    /// <summary>
    /// Get refence to the azure hub
    /// </summary>
    /// <returns></returns>
    private static NotificationHubClient GetHub(NotificationHub nhub, bool enableTestSend = false)
    {          
        return NotificationHubClient.CreateClientFromConnectionString(nhub.EndPoint, nhub.HubName, nhub.AllowDiagnosticSend && enableTestSend);
    }
//
///获取azure中心的引用
/// 
/// 
私有静态NotificationHubClient GetHub(NotificationHub nhub,bool enableTestSend=false)
{          
从ConnectionString(nhub.EndPoint、nhub.HubName、nhub.AllowDiagnosticSend和enableTestSend)返回NotificationHubClient.CreateClient;
}

目前,我们每次发送推送通知时都会重新创建它。然而,根据我个人的经验,我知道我们在.NETHTTP客户机上遇到了问题,并且它没有足够快地释放tcp套接字。我担心这个库可能会出现类似的问题。

我建议使用Singleton并重用它,而不是每次都创建一个新实例

GitHub上已经报告了一个问题,您当前的策略(每次创建一个新实例)在负载非常高的情况下失败

您也可以遵循下面的stackoverflow讨论


是否有任何文档说明singleton实例可以安全使用?没有,Azure中没有此类文档说明singleton可以安全使用。您可以参考下面的GitHub关闭问题,其中人们尝试使用singleton,但他们面临一些由Azure团队修复的问题。