我需要SWF工作流来触发三个lambda函数之一。 SWF工作流程应该接受一些输入并确定并触发相应的lambda。我怎么能做到这一点?
答案 0 :(得分:1)
如果您使用的是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。
答案 1 :(得分:-1)
只要您只添加中间操作,就可以按部件构建流。只有在使用终端操作时才会实际执行流。请参阅示例Processing Data with Java SE 8 Streams, Part 1,“流操作:利用流来处理数据”部分:
可以连接的流操作称为中间操作。它们可以连接在一起,因为它们的返回类型是Stream。关闭流管道的操作称为终端操作。它们从诸如List,Integer之类的管道产生结果,甚至是void(任何非Stream类型)。
您可能想知道为什么区别很重要。好吧,在流管道上调用终端操作之前,中间操作不执行任何处理;它们是“懒惰的”。这是因为中间操作通常可以“合并”并通过终端操作处理成单个传递。