Je souhaite envoyer un événement que je reçois du concentrateur d'événements à plusieurs sujets dans le bus de service. J'utilise le code suivant pour envoyer des événements à plusieurs sujets en utilisant foreach pour obtenir topicname. Puisqu'il s'agit d'une boucle foreach, je reçois de la latence. Y a-t-il une meilleure façon de le faire?Envoi d'un événement à plusieurs sujets dans le bus de service
foreach (var topicname in GetTopics_ActiveList(payload).Result)
{
TopicClient Client = TopicClient.CreateFromConnectionString(connectionstring, topicname);
var payloadStream = new MemoryStream(Encoding.UTF8.GetBytes(payload));
//var msg = JsonConvert.SerializeObject(payloadStream);
//BrokeredMessage message = new BrokeredMessage(payloadStream, true);
BrokeredMessage message = new BrokeredMessage(payloadStream);
Client.Send(message);
}
1. Je ne serai pas en mesure de mettre mes clients en cache, car cela dépend des événements que je suis en train de traiter. Chaque événement va à un certain nombre de sujets. 2.Je peux avoir plusieurs abonnements dans un même sujet, mais lorsque le nombre d'abonnements augmente, il finit par ralentir. Merci pour la réponse rapide. –
Je ne suis pas sûr de # 2. La distribution d'un message envoyé à un sujet aux abonnements est effectuée sur le courtier. Il semble vraiment que ce serait plus lent que d'envoyer des messages individuels à tous les sujets. –
# 2 Vous pourriez avoir raison et l'autre raison pour laquelle nous utilisons des sujets est parce que si nous allons avec des abonnements alors il n'a aucune chaîne de connexion par abonnement finalement nous devons partager la chaîne de connexion de sujet à chaque écouteur, s'ils connaissent le autre nom d'abonnement dans le sujet qu'ils seraient en mesure d'écouter les messages. –