quickstart事件顺序

分析durabletask Quickstart中事件出现和处理的顺序
Orchestration
Fetch
Activity
Fetch
执行用户代码
Start Start
第一轮
StartFetch StartFetch
—-» ExecutionStarted
EndFetch
StartFetch
GreetingsOrchestration
–>. ??
EndFetch
StartFetch
GetUserTask
第二轮
—-» TaskCompleted
EndFetch
StartFetch
SendGreetingTask
第三轮
EndFetch

LockNextTaskOrchestrationWorkItemAsync

LockNextTaskOrchestrationWorkItemAsync 方法被调用的这个日志出现过三次:

********* versioning  ************* LockNextTaskOrchestrationWorkItemAsync()

第一次被调用时,event history 列表有:

  • OrchestratorStartedEvent (new)
  • ExecutionStartedEvent (new)

对应日志:

ProcessEvent: EventType=ExecutionStarted
GreetingsOrchestration.RunTask called

第二次被调用时,event history 列表有:

  • OrchestratorStartedEvent
  • ExecutionStartedEvent
  • TaskScheduledEvent
  • OrchestratorCompletedEvent
  • OrchestratorStartedEvent (new)
  • TaskCompletedEvent (new)

对应日志:

ProcessEvent: EventType=ExecutionStarted
GreetingsOrchestration.RunTask called
ProcessEvent: EventType=TaskScheduled
ProcessEvent: EventType=OrchestratorCompleted
ProcessEvent: EventType=TaskCompleted

第三次被调用时,event history 列表有:

  • OrchestratorStartedEvent
  • ExecutionStartedEvent
  • TaskScheduledEvent
  • OrchestratorCompletedEvent
  • OrchestratorStartedEvent
  • TaskCompletedEvent
  • TaskScheduledEvent
  • OrchestratorCompletedEvent
  • OrchestratorStartedEvent (new)
  • TaskCompletedEvent (new)

对应日志:

ProcessEvent: EventType=ExecutionStarted
GreetingsOrchestration.RunTask called
ProcessEvent: EventType=TaskScheduled
ProcessEvent: EventType=OrchestratorCompleted
ProcessEvent: EventType=TaskCompleted
ProcessEvent: EventType=TaskScheduled
ProcessEvent: EventType=OrchestratorCompleted
ProcessEvent: EventType=TaskCompleted