如何通过带有AWS Lambda和SNS事件的Spring Cloud Functions触发重试

时间:2019-04-18 11:27:35

标签: aws-lambda spring-cloud amazon-sns aws-serverless spring-cloud-function

我有一个在AWS Lambda上运行的Spring Cloud Function,用于处理SNS事件。 对于某些错误情况,我想触发自动Lambda重试或触发SNS服务的重试功能。 SNS重试策略处于默认配置。

我试图返回一个带有{“ statusCode”:500}的JSON,当我们在aws控制台中进行测试调用时,该JSON可以正常工作。 无论如何,当我们发送此状态时,不会触发该功能的重试调用。

我们使用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 :(得分:0)

我们目前不提供重试支持,但是考虑到每个函数都已转换为反应性函数,如果您使用反应堆API声明了函数,那么您当然可以自己做。基本上是Function<Flux<SNSEvent>, Flux<Response>>,然后您可以使用一种可用的重试操作(例如retryBackoff)。