【发布时间】:2016-12-08 12:58:01
【问题描述】:
我需要 SWF 工作流来触发三个 lambda 函数之一。 SWF 工作流应该接受一些输入并确定和触发适当的 lambda。我怎样才能做到这一点?
【问题讨论】:
标签: java amazon-web-services amazon-swf
我需要 SWF 工作流来触发三个 lambda 函数之一。 SWF 工作流应该接受一些输入并确定和触发适当的 lambda。我怎样才能做到这一点?
【问题讨论】:
标签: java amazon-web-services amazon-swf
如果您使用的是 AWS Flow Framework,那么它看起来像:
@Execute
public void myWorkflow(Whatever input) {
if (match1(input)) {
lambdaClient.schedleLambdaFunction(name1, input1);
} else if (match2(input)) {
lambdaClient.schedleLambdaFunction(name2, input2);
} else if (match3(input)) {
lambdaClient.schedleLambdaFunction(name3, input3);
}
}
有关详细信息,请参阅AWS Flow Framework for Java Programming Guide、
AWS Flow Framework samples for Amazon SWF 和 AWS Flow Framework Recipes。
【讨论】:
只要只添加中间操作,就可以按部分构建流。只有当您使用终端操作时,才会真正执行流。例如,参见Processing Data with Java SE 8 Streams, Part 1,“流操作:利用流处理数据”部分:
可以连接的流操作称为中间操作。它们可以连接在一起,因为它们的返回类型是 Stream。关闭流管道的操作称为终端操作。它们从诸如 List、Integer 甚至 void(任何非 Stream 类型)之类的管道中生成结果。
您可能想知道为什么区分很重要。好吧,在流管道上调用终端操作之前,中间操作不会执行任何处理;他们很“懒惰”。这是因为中间操作通常可以被终端操作“合并”并处理为单遍。
【讨论】: