我想让一个Kinesis流具有很多Lambda使用者(不同的Lambda函数,而不仅仅是同一个Lambda的许多实例)。
Kinesis每秒限制5个读取事务(docs)。 Lambda函数将每秒轮询一个分片。
这是否意味着当我向流中添加第六个Lambda使用者时,我应该期望我的读取受到限制?
我知道一个新的Enhanced Fanout feature可以在一个流上实现5个以上的消费者,但是我找不到关于此新功能的Lambda函数。他们只谈论KCL2。
相反,我发现一些较老的文章描述了自己的扇出实现,以避免落后于Lambda消费者,例如this one。我想知道是否仍然需要这样做,还是Lambda消费者也可以利用新的增强型扇出功能。
答案 0 :(得分:0)
您可以尝试这样的事情吗?
/* in the parent lambda */
var consumers = [
{
id: "consumer",
eventData: someData // stream data inserted here
}
]
var params = {
ClientContext: "MyApp",
FunctionName: "MyFunction",
InvocationType: "Event",
LogType: "Tail",
Payload: null, // <Binary String>
Qualifier: "1"
};
let invoke = () => {
return new Promise((resolve, reject) => {
lambda.invoke(params, function(err, data) {
if (err) reject(err);
else resolve(data);
});
})
}
invokeArr = []
consumers.map((consumer) => {
params.Payload = consumer.eventData
invokeArr.push(invoke)
})
Promise.all(invokeArr).then((data) => console.log('were done'))