Как запустить повторную попытку с помощью функций Spring Cloud с помощью событий AWS Lambda и SNS - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть функция Spring Cloud, работающая на AWS Lambda, которая обрабатывает события SNS. Для некоторых случаев ошибки я хотел бы запустить автоматические лямбда-повторы или активировать возможности повторных попыток службы SNS. Политики повторов SNS находятся в конфигурации по умолчанию.

Я попытался вернуть JSON с {"statusCode": 500}, который работает, когда мы делаем тестовый вызов в консоли aws. В любом случае, когда мы отправляем этот статус, повторный вызов функции не запускается.

Мы используем SpringBootRequestHandler

public class CustomerUpdatePersonHandler extends SpringBootRequestHandler<SNSEvent, Response> {

}

@Component
public class CustomerUpdatePerson implements Function<SNSEvent, Response> {

    @Override
    public Response apply(final SNSEvent snsEvent) {
       //when something goes wrong return 500 and trigger a retry
       return new Response(500)
    }
}

public class Response{
    private int statusCode;

    public Response(int code){
        this.statusCode = code;
    }

    public int getStatusCode(){
        retrun statusCode;
    }
}

1 Ответ

0 голосов
/ 29 апреля 2019

В настоящее время мы не предоставляем поддержку для повторных попыток, но, учитывая, что каждая функция в любом случае преобразуется в реактивную функцию, вы, безусловно, можете сделать это самостоятельно, если объявите свою функцию с помощью API реактора.В основном Function<Flux<SNSEvent>, Flux<Response>>, а затем вы можете использовать одну из доступных операций повторной попытки (например, retryBackoff).

...