로컬 컴퓨터에 설치된 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") 수신기 모두 큐에서 메시지를 처리 할 수있는 방법이 있습니까? 아마도 대기열 설정에 설정이있을 것이라고 생각했지만 찾을 수없는 것 같습니다.
나는 독자의 속도를 늦추고 모두 메시지를 받고있다. 이제는 설치 문제가 아니지만 빈 큐 또는 다른 인스턴스가 해당 큐에서 너무 빨리 읽음을 알았습니다. 감사! –