これによると、 QueueClient.BeginReceiveに 24 日間の期間を設定することもできます。ご存じのとおり、Azure Service Bus の価格はストレージ トランザクションによって決まります。たとえば、beginreceive メソッドに 10 日間のタイムアウトを設定した場合、どれくらいのトランザクションがカウントされるのでしょうか? 1? 1 でない場合、どのように判断できますか?
これは、私の worker ロールの小さなコード サンプルです。価格はどうですか?
public override void Run()
{
updaterClient.BeginReceive(TimeSpan.FromDays(1), updaterClientReceiveEnded, null);
loggingQueueClient.BeginReceiveBatch(100, TimeSpan.FromMinutes(1), LoggingQueueClientReceiveEnded, null);
while (!IsStopped)
{
Thread.Sleep(TimeSpan.FromMinutes(1));
}
}
private async void updaterClientReceiveEnded(IAsyncResult ar)
{
var brokeredMessage = updaterClient.EndReceive(ar);
if (brokeredMessage != null)
{
var task = Task.Run(() => Updater.Current.Update(brokeredMessage));
await task;
}
updaterClient.BeginReceive(TimeSpan.FromDays(1), updaterClientReceiveEnded, null);
}
private async void LoggingQueueClientReceiveEnded(IAsyncResult ar)
{
var brokeredMessages = loggingQueueClient.EndReceiveBatch(ar);
if (brokeredMessages != null)
{
var task = Task.Run(() => LogUtil.Current.HandleMessages(brokeredMessages.ToList()));
await task;
}
loggingQueueClient.BeginReceiveBatch(100, TimeSpan.FromMinutes(1), LoggingQueueClientReceiveEnded, null);
}