Azure Центр уведомлений. c Экземпляр или воссоздать - PullRequest
2 голосов
/ 08 апреля 2020

Как правильно использовать клиент-концентратор уведомлений 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);
    }

В настоящее время мы воссоздаем его каждый раз мы отправляем уведомление pu sh. Однако из личного опыта я знаю, что у нас были проблемы с HTTP-клиентом. net, и он не выпускал сокеты tcp достаточно быстро. Я беспокоился, что в этой библиотеке могут возникнуть подобные проблемы.

1 Ответ

3 голосов
/ 08 апреля 2020

Я бы порекомендовал использовать Singleton и использовать его повторно, а не каждый раз создавать новый экземпляр.

Уже есть сообщение о проблеме на GitHub, когда ваша текущая стратегия (создание нового экземпляра каждый раз) дает сбой при очень высоких нагрузках.

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

Вы также можете следовать приведенному ниже обсуждению потока стека.

Azure NotificationHubClient создает исключение SocketException при интенсивном использовании функции Azure

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...