实现Web挂钩的设计(包括不阻塞和忽略取代重复事件)

问题描述 投票:0回答:1

我正在实现一个webhooks提供程序,并尝试解决一些问题,同时最大限度地减少系统的复杂性:

  1. 在调用所有挂钩时不阻止触发事件的API调用的处理,因此不会延迟对该调用的响应
  2. 如果某个客户端正在快速调用我的触发挂钩的API(即等待几秒钟并丢弃任何先前的调用,如果稍后会出现重复),则不会对我的侦听器进行大量调用

我的环境是Python(Chalice)和AWS Lambda。理想的解决方案将易于集成和便宜。

python aws-lambda webhooks
1个回答
1
投票

我会根据精确的架构设计使用SQS / SNS。也许Apache Kafka,如果你需要更长时间存储事件......

因此,即将到来的事件将放在SQS上,然后其他lambda将用于处理。问题是处理时间限制在5分钟。交付也不能平行。

其他选项是每个接收器有一个输入队列和一个输出队列。因此处理输入的lambda函数只是通过其他队列传播它。然后其他lambdas负责交付。这种方式有其他明显的问题。

最后。处理输入时,lambda可以在传出队列上生成消息,检测应将哪些消息传递给哪些用户。然后,您可以在传出队列的每条消息上触发一个lambda。在那里你可以有小循环传递消息。请注意,如果出现问题,您需要发回未送达的内容。

好的一点是SQS有类似死信队列的东西,因此有问题的消息不会永远留在那里。

© www.soinside.com 2019 - 2024. All rights reserved.