我正在实现一个webhooks提供程序,并尝试解决一些问题,同时最大限度地减少系统的复杂性:
我的环境是Python(Chalice)和AWS Lambda。理想的解决方案将易于集成和便宜。
我会根据精确的架构设计使用SQS / SNS。也许Apache Kafka,如果你需要更长时间存储事件......
因此,即将到来的事件将放在SQS上,然后其他lambda将用于处理。问题是处理时间限制在5分钟。交付也不能平行。
其他选项是每个接收器有一个输入队列和一个输出队列。因此处理输入的lambda函数只是通过其他队列传播它。然后其他lambdas负责交付。这种方式有其他明显的问题。
最后。处理输入时,lambda可以在传出队列上生成消息,检测应将哪些消息传递给哪些用户。然后,您可以在传出队列的每条消息上触发一个lambda。在那里你可以有小循环传递消息。请注意,如果出现问题,您需要发回未送达的内容。
好的一点是SQS有类似死信队列的东西,因此有问题的消息不会永远留在那里。