根据输入执行不同的lambdas

时间:2016-12-08 12:58:02

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

我需要SWF工作流来触发三个lambda函数之一。 SWF工作流程应该接受一些输入并确定并触发相应的lambda。我怎么能做到这一点?

2 个答案:

答案 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 SWFAWS Flow Framework Recipes

答案 1 :(得分:-1)

只要您只添加中间操作,就可以按部件构建流。只有在使用终端操作时才会实际执行流。请参阅示例Processing Data with Java SE 8 Streams, Part 1,“流操作:利用流来处理数据”部分:

  

可以连接的流操作称为中间操作。它们可以连接在一起,因为它们的返回类型是Stream。关闭流管道的操作称为终端操作。它们从诸如List,Integer之类的管道产生结果,甚至是void(任何非Stream类型)。

     

您可能想知道为什么区别很重要。好吧,在流管道上调用终端操作之前,中间操作不执行任何处理;它们是“懒惰的”。这是因为中间操作通常可以“合并”并通过终端操作处理成单个传递。