2013-03-06 5 views
2

로컬 컴퓨터에 설치된 Windows 서비스 버스 (Azure가 아닌)를 가지고 놀고 있습니다. 여기 예제를 따랐지만 내 로컬 인스턴스에 대해 바꿨다. http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-queues/Windows 서비스 버스 - 다중 수신기

나는 두 개의 콘솔 앱을 지금 설치하고 있는데 하나는 리시버이고 다른 하나는 보낸 사람이다. 수신기는 새 메시지를 수신하고 출력의 console.writeline 수행합니다

while (true) 
      { 

       // Create message, passing a string message for the body 
       BrokeredMessage message = new BrokeredMessage("Test message " + i); 

       // Set some addtional custom app-specific properties 
       message.Properties["TestProperty"] = "TestValue"; 
       message.Properties["Message number"] = i; 

       // Send message to the queue 
       Client.Send(message); 

       i++; 

       System.Threading.Thread.Sleep(50); 
      } 

이 실제로 모두가 잘 작동 : 내 보낸 사람이

// Continuously process messages sent to the "TestQueue" 
      while (true) 
      { 
       BrokeredMessage message = Client.Receive(); 

       if (message != null) 
       { 
        try 
        { 
         Console.WriteLine("Body: " + message.GetBody<string>()); 
         Console.WriteLine("MessageID: " + message.MessageId); 
         Console.WriteLine("Test Property: " + 
          message.Properties["TestProperty"]); 
         Console.WriteLine("----------------------"); 

         // Remove message from queue 
         message.Complete(); 
        } 
        catch (Exception) 
        { 
         // Indicate a problem, unlock message in queue 
         message.Abandon(); 
        } 
       } 
      } 

다음을. 나는 1 명의 수신기를 시작할 수 있고, 보낸 사람과 나는 메시지를 볼 수있다. 그런 다음 두 번째 수신기를 시작하고 두 수신기간에 메시지가 자동으로주고받습니다.

그러나 세 번째 수신자를 위로 돌리면 첫 번째 수신자가 메시지 수신을 중단합니다 (다른 수신자가 종료 될 때까지).

세 개의 (또는 "n") 수신기 모두 큐에서 메시지를 처리 ​​할 수있는 방법이 있습니까? 아마도 대기열 설정에 설정이있을 것이라고 생각했지만 찾을 수없는 것 같습니다.

답변

1

발신자의 수면을 줄이면 첫 번째 수신자가 메시지를 검색하기 시작합니까? 두 번째 및 세 번째 수신자가 메시지를 검색하지만 큐가 비어있어 첫 번째 수신자가 메시지를 검색 할 수 없도록 큐가 읽혀진 것일 수 있습니다.

독립적 인 독자가 대기열을 처리하도록하거나, 모든 수신자가 메시지를 처리 ​​할 수있는 일대 다 통신을 수행하고 있습니까? 그렇다면 Topics and Subscriptions을 사용해보아야합니다.

+0

나는 독자의 속도를 늦추고 모두 메시지를 받고있다. 이제는 설치 문제가 아니지만 빈 큐 또는 다른 인스턴스가 해당 큐에서 너무 빨리 읽음을 알았습니다. 감사! –

관련 문제