AWS Step Functions
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

避免轮询活动任务时发生延迟

GetActivityTask API 设计为仅提供一次 taskToken。如果在通过活动工作线程通信时 taskToken 被丢弃,大量 GetActivityTask 请求可能会被阻止 60 秒以等待响应,直至 GetActivityTask 超时。如果只有少量轮询等待响应,则可能所有请求都会排在被阻止的请求之后,无法处理。但是,如果每个活动 ARN 都有大量未完成轮询,某个百分比的请求需要等待,不过更多的请求仍然可以获取 taskToken 并开始处理工作。

对于生产系统,建议每个活动 ARN 在每个时间点至少有 100 个轮询。如果一个轮询被阻止,其后有一部分轮询排队,在 GetActivityTask 请求被阻止时,仍然有更多请求将获得 taskToken 可以处理工作。

避免在轮询任务时出现这类延迟问题:

  • 在活动工作线程实现的工作之外通过单独的线程实现轮询器。

  • 每个活动 ARN 在每个时间点至少有 100 个轮询。

有关轮询器线程独立于工作线程的示例活动工作线程,请参阅使用 Ruby 编写的示例活动工作线程。有关活动和活动工作线程的更多信息,请参阅活动