【发布时间】:2017-11-23 03:40:01
【问题描述】:
我正在寻求有关我对产品做出的建筑设计决策的帮助。
我们有多个生产者(由 API 网关调用 Lambda 发起)将消息放入 SQS 队列(请求队列)。可以有多个同时调用,因此会有多个 Lambda 实例并行运行。
然后我们有消费者(假设是 20 个 EC2 实例)在 SQS 上进行长轮询以获取消息来处理它们。它们每个处理一条消息大约需要 30-45 秒。
理想情况下,我希望将响应发送回发出请求的生产者 - 这是我在使用 SQS 时遇到的问题。理论上我会有一个单独的响应队列,最初的 Lambda 生产者将使用它,但似乎没有办法挑选特定的相关响应。也就是说,每个 Lambda 函数都可能获取另一个函数的响应。我正在寻找类似于这种设计模式的东西:http://soapatterns.org/design_patterns/asynchronous_queuing
我能看到的唯一选择是为每个 Lambda API 调用创建一个新的 SQS 响应队列,在消息中传递其 ARN 以供消费者放置响应,但我无法想象这是非常有效的 -特别是当每分钟可能有数百条消息时?我错过了一些明显的东西吗?
我认为唯一的其他选择是设置更大的消息代理(例如 RabbitMQ/ApacheMQ)环境,但如果可能的话我想避免这种情况。
谢谢!
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-sqs