SWF活动未完成,即使计算已完成



我正在测试一个新的SWF工作流,我有一些活动可以对另一个服务进行RESTful调用。问题是,通过日志记录,我可以看到实际的调用只需要不到一秒钟的时间就可以完成,但"活动"在SWF中总是超时(START_to_CLOSE为5分钟(。更具体地说,RESTful调用是一个列表调用,当我将批处理大小限制为一个小数字时,"活动"会很快完成并继续。但在某个看似武断的门槛上,它完全窒息了。

有人对此有任何见解吗?我读到SWF调用的大小限制为1MB,有人知道如何找到我的工作人员试图传递SWF的数据大小吗?

经过一些远程调试后,发现任务的响应太大,活动正在无声地失败。当框架试图向SWF报告响应,并且SDK调用RespondActivityTaskCompleted时,就会发生故障。该API对内部result参数有长度限制

长度限制:最大长度为32768。

这是一个验证错误,会引发一个未捕获的异常,并在"活动"超时之前在内部被吞噬。

我不建议使用活动输入和输出参数来传递大型数据集。SWF是一种编排技术,而不是数据传递技术。标准的解决方法是:

  • 将结果存储在一个单独的存储中(例如S3(,并将引用传递给它
  • 在计算机上本地缓存结果,并将以下所有活动路由到同一主机,以便它们能够访问缓存的结果。有关路由方法的详细信息,请参阅文件处理示例

BTW。你有没有检查过Cadence,它是SWF的开源版本,有更好的客户端库?

最新更新