2

Nous utilisons Azure SDK pour publier un message sur Service Bus. Dans appel API Web que nous faisons ces tâches à plusieurs reprises pour chaque requête entranteEst-ce que Azure Service TopicClient Thread est sûr et réutilisable?

MessagingFactory factory = MessagingFactory.CreateFromConnectionString(conStr); 
factory.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), 3); 
var namespaceManager = NamespaceManager.CreateFromConnectionString(conStr); 

TopicClient topicClient = factory.CreateTopicClient(topicName); 

peut topicClient être converti en Singleton & réutilisé sur plusieurs threads?

Répondre

3

peut topicClient être converti en Singleton & réutilisé sur plusieurs threads?

Oui, c'est la pratique recommandée. De Best Practices for performance improvements using Service Bus Messaging

service objets client Bus, comme QueueClient ou MessageSender, sont créé par un objet MessagingFactory, qui fournit également la gestion interne des connexions. Vous ne devez pas fermer la messagerie des usines ou des clients de file d'attente, de rubrique et d'abonnement après avoir envoyé un message , puis les recréer lorsque vous envoyez le message suivant. La fermeture d'une fabrique de messagerie supprime la connexion au service Service Bus et une nouvelle connexion est établie lors de la recréation de la fabrique . L'établissement d'une connexion est une opération coûteuse que vous pouvez éviter en réutilisant les mêmes objets usine et client pour plusieurs opérations . Vous pouvez utiliser en toute sécurité l'objet QueueClient pour envoyer des messages à partir d'opérations asynchrones simultanées et de plusieurs threads.