【问题标题】:Retry period after an unhandled exception in a Workflow工作流中出现未处理异常后的重试时间
【发布时间】:2012-03-29 14:40:12
【问题描述】:

目前在我们的工作流应用程序中,如果遇到未处理的异常,它将从最近保持的状态重新加载工作流并重试。有什么方法可以配置它的工作原理吗?例如,如果服务关闭,工作流将每秒重新加载并尝试再次运行,当有多个工作流都在做同样的事情时,每分钟可能会导致数千个异常。

我认为在 workflowIdle 上使用 timeToPersist 和 timeToUnload 属性可能与此有关。目前我们将此设置为:

如果我将 timeToUnload 设置为 1 分钟,这是否意味着工作流每分钟只能重试一次?

【问题讨论】:

    标签: workflow workflow-foundation-4 workflowservice


    【解决方案1】:

    TimeToPersist 和 TimeToUnload 不会在这里发挥作用 - 这些值决定了工作流在被持久化/卸载之前必须空闲多长时间。

    您可能可以使用 WorkflowApplication.OnUnhandledException 创建一个包罗万象的异常处理程序(假设您使用此类来创建工作流)。

    http://msdn.microsoft.com/en-us/library/system.activities.workflowapplication.onunhandledexception.aspx

    【讨论】:

    • 这些是 IIS 托管的 xamlx 工作流,所以这是不行的 - 它不是关于处理异常 - 那里的一切都按照我想要的方式 100% 工作,我使用工作流跟踪记录异常。唯一的问题是工作流程会再次被重新启动并立即重试。如果我有数千个正在运行的工作流并且某项服务出现故障,我每分钟可能会进行数千次尝试(因此会出现数千次失败),这会给服务器带来大量额外负载。我想设置它,以便工作流在重试之前等待一分钟左右。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多