将活动任务路由到SWF车队中的特定工作人员

时间:2018-02-14 19:45:53

标签: amazon-web-services amazon-swf

我有一组多个工作人员主机轮询我的SWF的以下任务:

  1. 活动1:执行一些业务逻辑以创建大文件。
  2. 活动2:等待一段时间(人工批准,计时器等)
  3. 活动3:使用某种协议传输文件(由SWF的输入参数控制)。
  4. 活动4:清理本地生成的文件。
  5. 步骤1中生成的文件需要在步骤3中再次使用,最后在工作流程结束时丢弃。

    如果所有任务只有1个主机轮询,则系统可以正常工作。但是,当我有多个工作人员时,我似乎无法确保任务-1和任务-3最终会在同一主机上。

    我想避免做以下事情:

    • 在步骤1上将文件上传到中央存储库(比如S3)并在步骤3中下载;或
    • 为task-1和task-3提供单个活动。

    我有以下问题:

    • 是否可以控制后续活动在同一主机上运行,​​而不是转到我的机队中的任何随机主机?
    • 有关重新使用工作流程中不同活动中生成的资源的具体指导原则/最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

  • 是否可以控制后续活动在中 相同的主机,而不是去我的车队的任何随机主机?

是的,绝对的。基本思想是SWF任务列表(用于传递活动任务的队列)是动态的。因此,每个主机都可以拥有自己的任务列表,工作流可以在调用活动时指定特定的任务列表名称。请参阅从池中的任何主机上执行下载活动的fileprocessing示例,然后转换文件并将结果上载到与第一个主机相同的主机上。

  • 列表项有关重新使用工作流中不同活动中生成的资源的具体指导原则/最佳做法是什么?

缓存的方法导致工作进程内存或本地磁盘被认为是最佳实践。有时候使用外部数据存储并每次获取它也是有意义的。