J'essaie d'utiliser EasynetQ pour envoyer et recevoir des messages de Rabbitmq, J'ai besoin d'envoyer le même message à plusieurs récepteurs ou qui est toujours connecté à l'époque.
J'ai essayé de publier le modèle de messagerie de publication et cela fonctionne bien, mais cela ressemble plus à Round-Robin, où une fois le message reçu par un Récepteur Il est supprimé de la file d'attente et personne d'autre ne peut voir le message. P>
Voici mon expéditeur de message. P>
using (IBus bus = RabbitHutch.CreateBus(Host)) { bus.Subscribe<TextMessage>("dashboard", HandleTextMessage); Console.WriteLine("Listening for messages. Hit <return> to quit."); Console.ReadLine(); } } static void HandleTextMessage(TextMessage textMessage) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Got message: {0}", textMessage.Text); Console.ResetColor(); }
3 Réponses :
Je crois que la question décrit le comportement d'un échange de fanout. Ils ne sont pas largement utilisés, mais il est clair que c'est ce que vous recherchez. Plus d'informations peuvent être trouvées ici: https://www.tutlane.com / Tutoriel / Rabbitmq / Csharp-rabbbitmq-fanout-Exchange P>
Oui c'est ce que je cherche, mais je me demandais s'il y a la même capacité au client EASYNETQ?
Je n'ai pas compris à quel point le rabbitmq fonctionne. Tout ce dont j'avais besoin était de créer un échange et d'avoir échangé envoyer les messages aux files d'attente. Si les files d'attente l'ont fait ça. P>
En réalité, EasyNeTQ vous abstrait de devoir faire face à des échanges dans la plupart des cas. Pour réaliser ce que vous demandez simplement spécifier un identifiant d'abonnement différent lors de l'abonnement, pour Instace A GUIB:
public void GetMessages() { using (IBus bus = RabbitHutch.CreateBus(Host)) { bus.Subscribe<TextMessage>(Guid.NewGuid().ToString(), HandleTextMessage); Console.WriteLine("Listening for messages. Hit <return> to quit."); Console.ReadLine(); } } static void HandleTextMessage(TextMessage textMessage) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Got message: {0}", textMessage.Text); Console.ResetColor(); }