【问题标题】:What would happen if the decider is not running如果决策者没有运行会发生什么
【发布时间】:2012-04-17 12:20:29
【问题描述】:

当工作流初始化时,@Execute 任务会被调用,以便决策者可以决定任务流。

  • 当决策者进程未运行时会发生什么情况,SWF 能否启动决策者进程并执行流程。
  • 如果有多个决策者进程会发生什么,SWF 如何知道将请求处理到哪一个。

【问题讨论】:

    标签: amazon-web-services amazon-swf


    【解决方案1】:

    Amazon SWF 不需要决定由哪个决策者处理请求,因为您的工作是确保决策者正在运行并轮询新任务:

    http://docs.amazonwebservices.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-comm-proto

    【讨论】:

      【解决方案2】:
      What happens when a decider process is not running, can the SWF start the decider process and execute the flow.
      

      不,如果决策程序未运行,则工作流根本不会启动。

      What happens if there are multiple decider processes, how does SWF know which one to handle the request to.
      

      在启动工作流程时,您会创建要启动的决策程序/工作流程的实例。这个实例实际上决定了调用哪个工作流。

      【讨论】:

        【解决方案3】:

        在实践中,我发现当决策者进程未运行时,有时工作流会进入“DecisionTaskStarted”状态,即使没有决策者接受决策任务。这使得工作流看起来没有运行。据推测,决策任务将超时,并且工作流将安排一个新的决策任务,该任务将由您的决策者获取(如果它现在正在运行)。

        如果您有多个决策者正在运行,则首先获取决策任务的一方将处理它。如果您想将不同的决策任务分配给不同的决策者,请为工作流提供不同的“task_list”。具有“task_list”的决策者将仅使用相同的 task_list 对自己的工作流进行操作。

        【讨论】:

          猜你喜欢
          • 2011-03-19
          • 2019-09-27
          • 2014-04-04
          • 2013-02-21
          • 2014-04-10
          • 2017-08-20
          • 2012-09-28
          • 1970-01-01
          相关资源
          最近更新 更多