From 758dad59ef73c2a9059bcb6b49e81fb1b8956159 Mon Sep 17 00:00:00 2001 From: Chris Gillum Date: Mon, 22 May 2023 11:05:36 -0700 Subject: [PATCH] [Workflow] Update pattern docs with updated retry policies Signed-off-by: Chris Gillum --- .../workflow/workflow-patterns.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-patterns.md b/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-patterns.md index 07010e189..514004278 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-patterns.md +++ b/daprdocs/content/en/developing-applications/building-blocks/workflow/workflow-patterns.md @@ -31,25 +31,27 @@ Dapr Workflow solves these complexities by allowing you to implement the task ch ```csharp // Expotential backoff retry policy that survives long outages -var retryPolicy = TaskOptions.FromRetryPolicy(new RetryPolicy( - maxNumberOfAttempts: 10, - firstRetryInterval: TimeSpan.FromMinutes(1), - backoffCoefficient: 2.0, - maxRetryInterval: TimeSpan.FromHours(1))); +var retryOptions = new WorkflowTaskOptions +{ + RetryPolicy = new WorkflowRetryPolicy( + firstRetryInterval: TimeSpan.FromMinutes(1), + backoffCoefficient: 2.0, + maxRetryInterval: TimeSpan.FromHours(1), + maxNumberOfAttempts: 10), +}; -// Task failures are surfaced as ordinary .NET exceptions try { - var result1 = await context.CallActivityAsync("Step1", wfInput, retryPolicy); - var result2 = await context.CallActivityAsync("Step2", result1, retryPolicy); - var result3 = await context.CallActivityAsync("Step3", result2, retryPolicy); - var result4 = await context.CallActivityAsync("Step4", result3, retryPolicy); + var result1 = await context.CallActivityAsync("Step1", wfInput, retryOptions); + var result2 = await context.CallActivityAsync("Step2", result1, retryOptions); + var result3 = await context.CallActivityAsync("Step3", result2, retryOptions); + var result4 = await context.CallActivityAsync("Step4", result3, retryOptions); return string.Join(", ", result4); } -catch (TaskFailedException) +catch (TaskFailedException) // Task failures are surfaced as TaskFailedException { // Retries expired - apply custom compensation logic - await context.CallActivityAsync("MyCompensation", options: retryPolicy); + await context.CallActivityAsync("MyCompensation", options: retryOptions); throw; } ```