Как запустить повторную попытку с помощью функций Spring Cloud с помощью событий AWS Lambda и SNS
У меня есть Spring Cloud Function, работающая на 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 ответ
В настоящее время мы не предоставляем поддержку для повторных попыток, но, учитывая, что каждая функция в любом случае преобразуется в реактивную функцию, вы, безусловно, можете сделать это самостоятельно, если объявите свою функцию с помощью API-интерфейса реактора. В принципе Function<Flux<SNSEvent>, Flux<Response>>
а затем вы можете использовать одну из доступных повторных операций (например, retryBackoff
).