2016-06-14 42 views
0

MSMQマルチキャスト機能を使用してパブリッシャおよびサブスクライバモデルを作成したいとします。 私は既に成功していないリンクの答えに従っていますMSMQ - Cannot receive from Multicast queues ローカルマシンで送受信されるメッセージ。MSMQメッセージマルチキャスト:異なるマシンでメッセージを受信できません

送信者:

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(); 
    } 
} 

受信機:

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(); 
     } 
    } 
} 

私はIPがイベントログ(これについてはよく分からない)に表示してmulticastbindのレジストリにキーを追加しました。 キューに指定するMulticastAddressは、何か特定のものか、指定された範囲内の何かを使用できますか?

答えて

0

これはポート番号を変更するだけで解決しました。残りは大丈夫だった。

関連する問題