8

キューからのメッセージを処理するために Azure Webjobs を使用しています。

Webjobs SDK は、失敗したメッセージを 10 分後に再度処理し、5 回失敗した場合はポイズン キュー ( 1 ) に移動することを確認しました。

また、キュー内のメッセージの nextVisibleTime も確認できます。これは、insertionTime ( 2 ) の 10 分後です。

メッセージの AzureSDK エラー処理を使用したいのですが、メッセージが再度処理されるまで 10 分待つことができません。

この nextVisibleTime を数秒に設定する方法はありますか?

Azure App Service で .NET WebJob を作成する

メソッドが完了する前に失敗した場合、キュー メッセージは削除されません。10 分間のリースが期限切れになると、メッセージは解放され、再び取得されて処理されます。

WebJobs SDK で Azure キュー ストレージを使用する方法

public static void WriteLog([QueueTrigger("logqueue")] string logMessage,
    DateTimeOffset expirationTime,
    DateTimeOffset insertionTime,
    DateTimeOffset nextVisibleTime,

注: StackOverflow にも同様の質問がありますが、回答はありません。

4

2 に答える 2

5

最新の v1.1.0 リリースでは、 JobHostConfiguration.Queues.QueueProcessorFactory を介して独自のカスタム QueueProcessor インスタンスを登録することで、可視性タイムアウトを制御できるようになりました。これにより、高度なメッセージ処理動作をグローバルに、またはキュー/関数ごとに制御できます。

たとえば、失敗したメッセージの可視性を設定するには、次のようにReleaseMessageAsyncをオーバーライドできます。

protected override async Task ReleaseMessageAsync(CloudQueueMessage message, FunctionResult result, TimeSpan visibilityTimeout, CancellationToken cancellationToken)
{
    // demonstrates how visibility timeout for failed messages can be customized
    // the logic here could implement exponential backoff, etc.
    visibilityTimeout = TimeSpan.FromSeconds(message.DequeueCount);

    await base.ReleaseMessageAsync(message, result, visibilityTimeout, cancellationToken);
}

詳細については、こちらのリリース ノートを参照してください。

于 2015-12-04T17:20:10.423 に答える
0

関数の処理中に例外が発生した場合、SDK はメッセージをすぐにキューに戻し、メッセージは再処理されます。この動作が見られませんか?

于 2015-07-06T21:16:30.660 に答える