如何使用AWS Lambda和SNS事件触发Spring Cloud功能的重试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用AWS Lambda和SNS事件触发Spring Cloud功能的重试相关的知识,希望对你有一定的参考价值。

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

我试图返回一个带有{“statusCode”:500}的JSON,当我们在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;
    }
}
答案

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

以上是关于如何使用AWS Lambda和SNS事件触发Spring Cloud功能的重试的主要内容,如果未能解决你的问题,请参考以下文章

AWS Beanstalk - 创建新环境时向 Lambda 发送 SNS 通知

AWS Elastic Beanstalk上发生了哪种事件会触发SNS通知?

我可以触发 Lambda 函数或 SNS 事件来响应 AppSync GraphQL 突变吗?

AWS Java Lambda JVM实例

使用 AWS Lambda 更新无服务器 CQRS + EventSourcing ReadModel

如何从外部 SQS 队列活动触发 AWS Lambda 函数