我正在使用Lambda通过Firehose向Redshift发送批处理消息。根据Firehose API docs,如果存在某些传递问题(消息中毒,端点崩溃等),Firehose将继续尝试24小时并删除该消息。我想在X次失败尝试后将失败的消息移到另一个队列(本质上像SQS Redrive Policy)。最好的方法是什么,最好不要交叉检查目标Redshift数据库?
最佳答案
通过您的链接,我假设您有兴趣跟踪PutRecord到Firehose Kinesis流的失败,而不是Kinesis-> S3-> Redshift流。
初始化Firehose客户端时,实际上可以指定要进行的重试次数。当收到异常(流中未放置PutRecord)时,Firehose将自动尝试您设置的最大重试次数;这是在SDK的幕后完成的,因此您将不知道重试次数已经超过,直到您遇到了异常冒泡的函数。当您收到此异常时,可以假定已超过重试次数。此异常处理可以包括将消息发送到SQS队列。
您可以在此处了解有关Firehose客户端配置的更多信息,虽然它并不为人所知,但却非常有用。 Firehose ClientConfiguration。
关于amazon-web-services - 在AWS Firehose中添加故障处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35433193/