ローカルマシンにインストールしたWindowsServiceBus(Azureではない)で遊んでいます。ここの例に従いましたが、ローカルインスタンスに交換しました:http ://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-queues/
現在、2つのコンソールアプリをセットアップしています。1つは受信者で、もう1つは送信者です。受信者は新しいメッセージをリッスンし、出力の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つの受信者を起動でき、送信者とメッセージを表示できます。次に、2番目の受信機を起動すると、メッセージは2つの受信機の間を自動的に行き来します。
ただし、3番目の受信者を起動すると、最初の受信者はメッセージの取得を終了します(別の受信者が終了するまで)。
3つすべて(または「n」)の受信者にキューからのメッセージを処理させる方法はありますか?キューの設定に設定があるのではないかと思いましたが、見つからないようです。