このような重いタスクを達成しながら、より良いユーザーエクスペリエンスを提供するためにアプリケーションの処理をオフロードしたい場合、Azure Service Bus Queues 。Azureの機能を持つAzureサービスバスキューメッセージの処理
私はキューにデータをプッシュする方法とメッセージキューの背後にある基本的な考え方を理解していますが、私が理解するのが苦労しているのは、彼らが入ったときにそれらを処理する方法です。実装するには、メッセージが来るたびにリッスンするAzure関数を使用します。ただし、一定のポーリングなしでそれを行うにはどうすればよいですか? OnMessageを使用してキューに登録することはできますが、Azure関数はどのように機能しますか?例えば
現在私たちは、このような何かをやって
var client = QueueClient.CreateFromConnectionString(connectionString, queueName);
BrokeredMessage message = new BrokeredMessage();
while ((message = client.Receive(new TimeSpan(hours: 0, minutes: 0, seconds: 30))) != null)
{
Console.WriteLine(string.Format("Message received: {0}, {1}, {2}", message.SequenceNumber, message.Label, message.MessageId));
message.Complete();
Console.WriteLine("Processing message (sleeping...)");
Thread.Sleep(1000);
}
Console.WriteLine("Finished listening Press ENTER to exit program");
Console.ReadLine();
しかし、このケースでは、我々はちょうどポーリング権利をシミュレートしていますか?されていますかこれはちょうどよい解決のように感じません。私は私のデザインでこの間違いを考えていますか?
小さな修正 - ブローカーはクライアントにメッセージをプッシュしていませんが。 Azure Service Busクライアントには、メッセージをポーリングする別のスレッドで動作するメッセージポンプがあります。 –
ありがとう私はこれが私が探していたような気がしましたが、このアプローチを使用するための正確な方法論を見つけることができませんでした。 – tokyo0709