簡體   English   中英

一個 SQS 輪詢器能否處理多個 SQS 隊列並確定其優先級?

[英]Can one SQS poller, handle multiple SQS queues and prioritize it?

我有一個用例,其中有 2 個 SQS 隊列,每個隊列都在獲取消息。 但條件是如果我在 FIRST 隊列中獲取消息,我將停止從 SECOND 隊列讀取消息並優先處理 FIRST 隊列消息。 我可以只使用一個 SQS 輪詢器來處理這個問題嗎?

問題陳述:我經常在 FIRST 隊列中收到消息,但這些都是重要的消息。 但是我不斷地在 SECOND 隊列中獲取消息。 所以,如果輪詢器正在處理第二個隊列的消息,並且突然有新消息出現在第一隊列中,那么處理完第二隊列的消息后,它應該跳轉到第一隊列並開始取消息從那里直到第一個隊列為空。

有解決辦法嗎?

這是處理優先消息的好方法。

如果您只有一個消息消費者(您稱之為“輪詢器”),那么它應該:

  • 優先隊列中檢索和處理消息
  • 如果該隊列為空,則從普通隊列中檢索和處理消息

您需要將此行為編碼到您的消費者中。 沒有從多個隊列輪詢的內置功能

如果您正在運行多個消費者,那么您可能希望讓每個消費者都執行上述操作,或者您可以將其中的一部分分配給僅來自特定隊列的進程。 例如:

  • 一些消費者只能優先級隊列中輪詢,使用長輪詢來減少調用次數,但在優先級隊列中出現消息時立即響應
  • 其他消費者只能Normal 隊列中輪詢,以確保這些消息也受到關注
  • 您可以根據典型數據量調整消費者的相對數量

或者,您可以決定使用 AWS Lambda 函數來處理您的消息 在這種情況下,隊列將被並行處理,但不會給予一個隊列高於另一個隊列的優先級。 在這種情況下分配優先級的唯一方法是為每個隊列使用的 Lambda 函數分配不同的並發值 如果達到容量限制,這將使優先級隊列具有更多的並發性。

暫無
暫無

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

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