Выполнять разные лямбды на основе ввода
Мне нужен рабочий процесс SWF для запуска одной из трех лямбда-функций. Рабочий процесс SWF должен принимать некоторые входные данные, определять и запускать соответствующую лямбду. Как я могу сделать это?
2 ответа
Если вы используете 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 для Java,
Примеры AWS Flow Framework для рецептов Amazon SWF и AWS Flow Framework.
Вы можете строить поток по частям, если добавляете только промежуточные операции. Только когда вы используете терминальные операции, поток фактически выполняется. См., Например, Обработка данных с помощью потоков Java SE 8, часть 1, раздел "Операции с потоками: использование потоков для обработки данных":
Потоковые операции, которые могут быть связаны, называются промежуточными операциями. Они могут быть соединены вместе, потому что их тип возвращаемого значения -Stream. Операции, которые закрывают потоковый конвейер, называются терминальными операциями. Они генерируют результат из конвейера, такого как List, Integer или даже void (любой тип, отличный от Stream).
Вы можете быть удивлены, почему различие важно. Ну, промежуточные операции не выполняют никакой обработки, пока в поточном конвейере не будет запущена терминальная операция; они "ленивы". Это потому, что промежуточные операции обычно могут быть "объединены" и обработаны в один проход операцией терминала.