0

これによると、 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);

}
4

1 に答える 1

1

メッセージごとに課金されます (メッセージ 10000 件あたり 0.01 ドル) ため、操作の結果メッセージが 1 件の場合は、かかった時間に関係なく、それが課金されます。

詳細については、http://msdn.microsoft.com/en-us/library/windowsazure/hh667438.aspx#BKMK_SBv2FAQ2_2 を参照してください。

于 2013-05-04T01:38:00.557 に答える