我正在使用Lambda通过Firehose将批处理消息发送到Redshift。根据{{3}},如果存在某些传递问题(中毒消息,端点关闭等),Firehose将继续尝试24小时并删除该消息。我希望在X尝试失败后将失败的消息移动到另一个队列(基本上像benchmark)。最好的方法是什么,最好不要交叉检查目标Redshift数据库?
答案 0 :(得分:0)
从您的链接,我假设您有兴趣跟踪PutRecord到Firehose Kinesis流的失败,而不是Kinesis - > S3 - >红移流程。
初始化Firehose客户端时,您实际上可以指定要进行的重试次数。如果收到异常(PutRecord无法访问流),Firehose将自动尝试您设置的最大重试次数;这是在SDK的引擎盖下完成的,所以你不会知道你的重试已经被超过,直到你的异常冒泡到你的功能。当您收到此异常时,您可以假定已超出重试次数。此异常处理可包括将消息发送到SQS队列。
您可以在此处了解有关Firehose客户端配置的更多信息,但这些配置并不为人所知,但非常有用。 Firehose ClientConfiguration
答案 1 :(得分:0)
这可以通过以下方式以不同的方式安静地完成,而不是从firehose直接进行。
您已将成功记录加载到红移,并将不成功的记录过滤到S3。
这是我们遵循的方法,如果您需要对此进行任何澄清,请与我们联系。