2016-06-14 20 views
0

Ich möchte Publisher und Subscriber Model mit MSMQ Multicast Feature erstellen. Ich habe bereits die Antwort in der Verbindung ohne Erfolg gefolgt MSMQ - Cannot receive from Multicast queues Nachrichten gesendet und empfangen in der lokalen Maschine.MSMQ-Nachricht Multicast: Kann Nachrichten auf anderem Computer nicht empfangen

Sender:

using (var helloQueue = new MessageQueue("FormatName:MULTICAST=234.1.1.1:8001")) 
{ 
    while (true) 
    { 
     var stopWatch = new Stopwatch(); 
     stopWatch.Start(); 

     for (var i = 0; i < 1000; i++) 
     { 
      SendMessage(helloQueue, 
       string.Format("{0}: msg:{1} hello world ", DateTime.UtcNow.Ticks, i)); 
     } 

     stopWatch.Stop(); 
     Console.ReadLine(); 

     Console.WriteLine("===================================================="); 
     Console.WriteLine("[MSMQ] done sending 1000 messages in " + stopWatch.ElapsedMilliseconds); 
     Console.WriteLine("[MSMQ] Sending reset counter to consumers."); 

     SendMessage(helloQueue, "reset"); 
     Console.ReadLine(); 
    } 
} 

Empfänger:

int messagesReceived = 0; 
var messages = new Queue<string>(5000); 
var filePath = typeof(Subscriber).FullName + ".txt"; 
var path = @".\private$\hello-queue"; 

using (var helloQueue = new MessageQueue(path)) 
{ 
    helloQueue.MulticastAddress = "234.1.1.1:8001"; 
    while (true) 
    { 
     var message = helloQueue.Receive(); 
     if (message == null) 
      return; 

     var reader = new StreamReader(message.BodyStream); 
     var body = reader.ReadToEnd(); 

     messagesReceived += 1; 

     messages.Enqueue(body); 
     Console.WriteLine(" [MSMQ] {0} Received {1}", messagesReceived, body); 

     if (string.CompareOrdinal("reset", body) == 0) 
     { 
      messagesReceived = 0; 
      File.WriteAllText(filePath, body); 
      messages.Clear(); 
     } 
    } 
} 

Ich habe Schlüssel in der Registry für multicastbind mit IP zeigt in Ereignisprotokoll (nicht sicher über diese). Die MulticastAddress, die wir in der Warteschlange angeben, ist es etwas bestimmtes oder wir können alles in dem angegebenen Bereich verwenden?

Antwort

0

Dies wurde behoben, indem nur die Portnummer geändert wurde. Die Erholung war in Ordnung.