首页 > 解决方案 > SQS 队列的弹性

问题描述

我们正在尝试为 SQS 队列开发 Live - DR 模型。

我们在 AWS 中有两个不同的帐户:

  1. eu-west(帐号 1234)
  2. us-east(帐号 4567)

我们的应用程序驻留在两个帐户(主动 - 被动)中。

每个 SQS 上都有一个 Lambda 触发器。

我们在这里可能面临的问题是:两个 SQS 队列都将处理事件,因为它订阅了同一个 SNS 主题。由于它连接到 Lambda 函数,因此两者都将处理事件。

我不希望这种情况发生。我希望一次只使用一对 SQS 和 Lambda 函数 - EU-WEST 或 US-EAST。我知道这可以通过删除非活动区域上的 Lambda 触发器来实现。

只是在寻找更好的方法。

标签: amazon-web-servicesaws-lambdaamazon-sqs

解决方案


我在这里找到了解决方案。

我们需要检查 Route53 以找到应用程序的当前活动区域。在 DR 区域,当我们在 SQS 上收到消息时,它将触发 lambda。lambda 根据 route53 或 ALB dns 检查活动区域。如果它发现该区域不是 active/live ,它将跳过对消息的处理,因此 SQS 队列将在 DR 上清除。

因此,活动区域 Lambda 将主动处理 SQS 消息,而 DR 将跳过所有处理。

这个想法应该适用于我上面提到的场景。


推荐阅读