将 activity 任务路由到 SWF 队列中的特定工作人员

Routing an activity task to a specific worker in the SWF fleet

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

  1. Activity 1: 执行一些业务逻辑来创建一个大文件。
  2. Activity 2:等待一段时间(人工批准,定时器等)
  3. Activity 3:使用某种协议传输文件(由 SWF 的输入参数控制)。
  4. Activity 4:清理本地生成的文件。

Step-1 中生成的文件需要在Step-3 中再次使用,最终在工作流结束时被丢弃。

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

我想避免做以下事情:

我有以下问题:

  • 是否可以控制后续活动在
    上运行 同一个主机,而不是转到我队列中的任何随机主机?

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

  • 列表项 guidelines/best 重用工作流中不同活动中生成的资源的具体做法是什么?

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