亚马逊AWS SWF等待信号

时间:2014-08-21 13:26:22

标签: ruby amazon-web-services amazon-swf

我正在建立一个流程,需要用户在某个时候进行干预。我已经阅读了文档,看到我应该使用SWF信号继续通过我的流程。

我想知道是否有办法让流程等待没有计时器的信号。

当我使用

  timer = create_timer_async(30)
  wait_for_any(timer, @signal_received)
  activity.activity_one

我的'activity_one'运行正常,我的工作流程执行完成,无论我的信号是否在30秒内收到。但是,如果我尝试运行

  wait_for_any(@signal_received)
  activity.activity_one

我的activity_one从不运行,它会继续循环“wait_for_any”的决策任务

我有什么方法可以让它只是挂在过程中直到收到信号?

1 个答案:

答案 0 :(得分:0)

根据您的描述,听起来SDK的行为符合预期。在第一种情况下,wait_for_any等待计时器触发(30秒后)或接收信号。所以正如你所提到的,你的活动在30秒后正确运行,但这只是因为计时器触发,而不是因为接收到信号。

在第二种情况下,由于您只是等待接收信号,因此活动永远不会触发,因为决策程序从未接收到信号。我的猜测是你没有正确发射信号。你能解释一下你是如何发射信号的吗?