我正在使用Lambda通过Firehose向Redshift发送批量消息。根据Firehose API docs,如果有一些传递问题(有毒的消息,端点关闭等),Firehose将继续尝试24小时并删除该消息。我希望在X次失败尝试后将失败的消息移动到另一个队列中(本质上类似于SQS Redrive Policy)。最好的方法是什么,最好不交叉检查目标Redshift数据库?
发布于 2016-02-28 09:53:21
从你的链接中,我假设你有兴趣跟踪PutRecord到Firehose Kinesis流的故障,而不是Kinesis -> S3 -> Redshift流。
在初始化Firehose客户端时,您可以实际指定希望重试的次数。当接收到一个异常(流的PutRecord失败)时,Firehose将自动尝试你设置的最大重试次数;这是在SDK中的幕后完成的,所以直到你的函数中出现异常,你才会知道重试次数已经超过了。当您获得此异常时,您可以假定已超过重试次数。这种异常处理可以包括将消息发送到SQS队列。
您可以在此处了解有关Firehose客户端配置的更多信息,虽然不是很广为人知,但非常有用。Firehose ClientConfiguration。
发布于 2017-09-06 01:10:39
这可以在下面的方法中安静地完成,而不是直接从消防水龙带的方式。
firehose.
将成功的记录加载到红移,将不成功的记录过滤到S3。
这是我们遵循的一种方法,如果你需要澄清这一点,请告诉我。
https://stackoverflow.com/questions/35433193
复制相似问题