AWS Lambda вызывает асинхронный внутри цикла, не ожидая будущего - PullRequest
0 голосов
/ 27 сентября 2018

Я просматриваю очередь AmazonMQ, чтобы найти глубину (маленькие сообщения по 1 КБ), затем вызываю лямбду для каждого сообщения, чтобы применить магию. Но кажется, что первая начальная лямбда должна «жить» до последней вызванной лямбдыЗаканчивается ..

Этот код не работает:

InvokeRequest request = new InvokeRequest();
request.setFunctionName("MyLambda");
request.setPayload("{}");

for (int i=0; i<5; i++)
{
   lambda.invokeAsync(request);
} 

Если я не сделаю, как указано здесь https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/basics-async.html и использую Future<InvokeResult> future_res = lambda.invokeAsync(req); и дождусь каждой лямбды.

Но что, если выполнение завершится для всех лямбд дольше 300 с, тогда у меня проблемы ..

Есть ли способ обойти это или возможно применить какой-то другой шаблон проектирования?

Обновление Похоже, установка InvocationType = 'Event' вызывает асинхронное поведение .. проведет дополнительное тестирование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...