2017-05-29 2 views
0

Je suis en train de jouer avec Azure Services Bus en essayant de faire un peu de publication/abonnement. Tout fonctionne comme il se doit, mais lorsque j'essaie de créer un client à partir d'une connexion, il faut vraiment beaucoup de temps pour établir la connexion. Il faut environ 22 secondes pour créer un client.Azure service bus, il est long temps de créer un client

Voici comment c'est fait.

var subscriptionClient1 = SubscriptionClient.CreateFromConnectionString(_connectionstring, "testTopic", "testSubscription"); 

Lorsque la première connexion est établie, il faut 2ms pour créer un nouveau client. Donc, je suppose que la plupart du temps est de créer une connexion à azur et de vérifier le contexte de sécurité.

Ma question est, est-ce lent pour tout le monde? (Si ce n'est pas le cas, je suppose que c'est notre configuration réseau qui ralentit) Y at-il une autre façon de faire la connexion et la création de clients qui pourrait être plus rapide?

Meilleures salutations Magnus

+1

Quel centre de données vous connectez-vous et avez-vous essayé d'autres? –

+0

J'ai vérifié ma création de SubscriptionClient, cela me coûte 7 secondes à la première fois. J'ai vérifié le Microsoft.ServiceBus.dll et a constaté que le client mettrait en cache la connexion, ainsi la dernière création d'un nouveau client serait plus rapide. –

+0

J'ai trouvé exactement le même 21-22 secondes pour créer un SubscriptionClient avec la même ligne de code que vous êtes. J'utilise les deux datacenters les plus proches avec le même résultat. Je sais que je suis sur un réseau restrictif, et je pourrais être limité à http/s transport par leurs pare-feu. Je ne suis toujours pas convaincu que cela devrait prendre si longtemps. – pseabury

Répondre

0

Je n'ai pas examiné le code SubscriptionClient de ServiceBus (s'il est disponible sur GitHub), mais le long délai est certainement lié au mécanisme ConnectivityMode et fallback sur les réseaux qui ne peuvent pas utiliser le transport Tcp normal. La sonde/fallback à https prend environ 20s. Si je demande à Servicebus d'utiliser Https manuellement (c'est-à-dire pour éviter le repli AutoDetect) sur les installations où je sais que tout ce que j'ai est Https, alors je reçois environ 1 seconde pour chaque SubscriptionClient. Je pense que le mécanisme de sélection du transport chez le client pourrait probablement être un peu plus rapide. Quoi qu'il en soit, voici comment:

ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Https; 

J'utilise un AppSetting pour le contrôler manuellement pour le moment.

+0

Salut Merci pour la réponse, je l'ai pensé à, juste oublié ma question ici sur le site. :) –

+0

'ServiceBusEnvironment' vient de l'ancien client, qui n'est pas disponible sur GitHub. –

+0

J'ai créé un problème là-bas pour renvoyer avec celui-ci au cas où quelqu'un suivrait ce - https://github.com/Azure/azure-service-bus/issues/151 – pseabury

0

j'ai essayé de faire la connexion à la maison, et il a fallu seulement 1-2 secondes au lieu de 22 du travail. Donc je suppose qu'il y a quelque chose dans la configuration des réseaux de travail qui est la cause de la connexion lente.

Je l'ai dit aux gars de l'infrastructure au travail et espère trouver la raison. S'ils ne peuvent pas bien alors ce n'est pas quelque chose que nous pouvons utiliser. Même si c'est plus rapide après la première connexion, cela prend encore 22 secondes pour le premier, et c'est une façon simple de faire longtemps.