【问题标题】:Azure Notification Hub static instance or recreateAzure 通知中心静态实例或重新创建
【发布时间】:2020-07-20 16:27:39
【问题描述】:

c# Azure Notification Hub Client 的正确使用方法是什么?

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

我想知道我们是否应该每次都重新创建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);
    }

目前,我们每次发送推送通知时都会重新创建它。但是,根据个人经验,我知道 .net HTTP 客户端存在问题,并且它没有足够快地释放 tcp 套接字。我担心这个库会开始出现类似问题。

【问题讨论】:

    标签: c# azure push-notification azure-notificationhub


    【解决方案1】:

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

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

    https://github.com/Azure/azure-notificationhubs-dotnet/issues/118

    您也可以关注下面的 stackoverflow 讨论。

    Azure NotificationHubClient throws SocketException when used on Azure function intensively

    【讨论】:

    • 是否有任何文档说明单例实例可以安全使用?
    • 不,Azure 中没有这样的文档说明单例在这里可以安全使用。您可以参考下面的 GitHub 已关闭问题,其中人们尝试使用单例并且他们面临一些由 Azure 团队修复的问题。 github.com/Azure/azure-notificationhubs-dotnet/issues/9
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2011-02-27
    相关资源
    最近更新 更多