簡體   English   中英

如何限制 AWS CDK 中的標准 FIFO 隊列吞吐量?

[英]How Do I Limit A Standard FIFO Queue ThroughPut In The AWS CDK?

我已經創建了一個 FIFO 隊列,但想限制它可以發出的請求數,以免發送這些請求的服務器過載。

代碼:

this.intoMagento = new Queue(this, "intoAPI", {
  queueName: `intoAPI.fifo`,
  fifo: true,
  contentBasedDeduplication: true,
  visibilityTimeout: Duration.minutes(5),
  fifoThroughputLimit: FifoThroughputLimit.PER_QUEUE,
});

雖然我限制了PER_QUEUE的吞吐量,但我如何告訴它我只想每分鍾執行 600 HTTP POST請求? 我是否在我的 Lambda 隊列消費者中執行此操作?

此外, FifoThroughputLimit.PER_QUEUE僅適用於高通量 SQS 隊列,還是也適用於標准隊列? 我有很多消息組。

SQS 隊列吞吐量不是細粒度的、用戶確定的設置* 相反,它是多種因素綜合作用的結果,包括隊列類型配額、消費者數量、批處理和消息分區模式。

Lambda事件源映射與 SQS 的集成盡可能快地拉取消息。 但是,這里有幾種方法可以限制您的 Lambda 消費者的消息消費:

  1. 快速而骯臟的方法是使用事件源映射的MaximumConcurrency設置來限制並發 Lambda 消費者的數量 如果幸運的話,將 MaximumConcurrency 設置為下限 2(並將batchSize設置為 1)將使處理速度減慢到接近您所需限制的可接受速度。 我想如果您需要額外的杠桿,您也可以按計划定期啟用/禁用集成。

  2. 如果您想要更細粒度的吞吐量控制,您將需要放棄事件源映射集成的便利。 使用 EventBridge 按計划觸發 Lambda。 您可以更精確地控制消息/小時,但需要手動從隊列中提取和刪除消息。 如果您有 600 條/小時的硬性限制,您還需要跟蹤截至目前已處理的消息數(例如,在 DynamoDB 表中),如果已達到給定的限制,則提前退出 Lambda時期。


* 雖然名稱可能另有含義,但 CDK 隊列構造的fifoThroughputLimit不是速度限制設置。 相反,它是在 FIFO 隊列上啟用高吞吐量的設置的一部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM