我玩的是我安裝在本地機器上的Windows服務總線(不是Azure)。我按照這裏的例子,但換了我的本地實例:http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-queues/Windows服務總線 - 多個接收器
我有兩個控制檯應用程序設置現在,一個是接收器,另一個是發件人。接收器只是監聽新的消息和不輸出的console.writeline:
// 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();
}
}
}
接下來,我有我的發件人:
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);
}
其實,這一切的偉大工程。我可以啓動1個接收器,發件人和我可以看到消息。然後我啓動第二個接收器,消息自動在兩個接收器之間來回傳遞。
但是,當我旋轉第三個接收器時,第一個接收器退出獲取消息(直到另一個接收器退出)。
有沒有辦法讓所有三個(或「n」)接收器處理隊列中的消息?我想可能會有隊列設置中的設置,但我似乎無法找到。
我放慢了讀者的步伐,他們都在收到消息。所以現在我知道這不是一個設置問題,但是一個空隊列或其他實例讀取的速度太快。謝謝! – 2013-03-06 06:58:15