带有AWS Lambda的AWS MSK-消息确认

问题描述

我在AWS官方文档中找不到有关AWS Lambda从AWS MSK(托管的Kafka)用于消息消费的确认模型的任何信息。

AWS Lambda如何从AWS MSK确认Kafka消息?可以配置它(自动还是手动)?

解决方法

无论您使用的是MSK还是其他任何东西,Kafka的确认模型都将相同-因此,为什么在AWS文档上找不到任何内容。您的使用者几乎需要将属性enable.auto.commit设置为true,以便您的使用者每5秒确认一次返回的所有记录。可以通过属性auto.commit.interval.ms来配置5秒间隔。如果将属性enable.auto.commit设置为false,则取决于用户通过显式调用方法commit()来确认每条记录。

现在请记住Lambda函数的性质。备份每个部署功能的基础容器会不时回收,并且您在功能中实例化的任何对象(例如KafkaConsumer)都将被破坏并按顺序创建。这意味着您在使用过程中可能会遇到性能延迟,并且如果最后一次轮询未提交所有读取的记录,则记录可能会重复。消费者将从上次提交的偏移量恢复处理。

幸运的是,AWS对MSK上的每个Kafka记录发布了对执行Lambda函数感兴趣的支持。这是一个链接,您可以了解更多有关此的信息:

https://aws.amazon.com/blogs/compute/using-amazon-msk-as-an-event-source-for-aws-lambda/