![](/img/trans.png)
[英]How do I force a devDependency to use the dependency in AWS-CDK
[英]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 消費者的消息消費:
快速而骯臟的方法是使用事件源映射的MaximumConcurrency設置來限制並發 Lambda 消費者的數量。 如果幸運的話,將 MaximumConcurrency 設置為下限 2(並將batchSize設置為 1)將使處理速度減慢到接近您所需限制的可接受速度。 我想如果您需要額外的杠桿,您也可以按計划定期啟用/禁用集成。
如果您想要更細粒度的吞吐量控制,您將需要放棄事件源映射集成的便利。 使用 EventBridge 按計划觸發 Lambda。 您可以更精確地控制消息/小時,但需要手動從隊列中提取和刪除消息。 如果您有 600 條/小時的硬性限制,您還需要跟蹤截至目前已處理的消息數(例如,在 DynamoDB 表中),如果已達到給定的限制,則提前退出 Lambda時期。
* 雖然名稱可能另有含義,但 CDK 隊列構造的fifoThroughputLimit不是速度限制設置。 相反,它是在 FIFO 隊列上啟用高吞吐量的設置的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.