Я играю с Windows Service Bus (Not Azure), который я установил на своем локальном компьютере. Я последовал примеру здесь, но поменял место для моего локального экземпляра: http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-queues/Windows Service Bus - несколько приемников
У меня есть две настройки консольных приложений прямо сейчас, одна из них - приемник, а другая - отправитель. Приемник только прослушивает новые сообщения и делает 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») получателя обрабатывали сообщения из очереди? Я думал, что, возможно, в настройке очереди будет настройка, но я не могу найти ее.
Я затормозил читателей, и теперь все они получают сообщения. Итак, теперь я знаю, что это не проблема с установкой, но пустая очередь или другие экземпляры слишком быстро читали из этой очереди. Благодаря! –