0

我們有一個要求,我們需要從SQS開始到結束一次處理1條消息(不是嚴格的順序)。無論如何,我們可以在SQS中將maxConcurrentConsumer設置爲1?AWS-SQS:如何設置maxConcurrentConsumers?

我正在查看文檔,但找不到此屬性進行設置。在亞馬遜控制檯上,我沒有在配置隊列菜單中看到該屬性。在消息檢索時,我們可以指定我們想要在單個輪詢中讀取多少條消息,但由於AWS自動縮放功能可以創建多個使用者(實際上是Springboot微服務),因此我們無法通過將此限制設置爲1來依靠它。

PS :我們無法控制消息發送者,它可以將許多消息發送到SQS。

回答

2

沒有設置控制併發SQS使用者的最大數量。正如你所提到的,通常的做法是根據隊列的大小對隊列消費者進行水平擴展。如果無論出於何種原因,您的要求是擁有一個隊列消費者,那麼您將不得不從其他微服務中刪除或禁用隊列消費者,因此您只有一個消費者。

但是,我鼓勵您重新考慮只允許單個隊列消費者的設計,因爲該實現不會擴展。

+0

我知道這不是最好的設計方式,因爲我們嚴重限制了應用程序的擴展能力。事實是,我們被鎖定在這些消息的消費者的產品中,並且它無法處理多個線程。它在重負荷下正處於競賽狀態。短期內,我們需要以某種方式限制SQS消費者的實例數量,直到產品修復。我認爲這裏唯一的選擇是在應用程序屬性文件中手動評論SQS。謝謝! – SanA

+0

您是否嘗試過使用任何SQS隊列的設置,特別是可見性超時?它可能沒有根據究竟是什麼導致競爭條件產生任何影響,但可見性超時控制消息對其他消費者不可見的時間。因此,如果您設置較大的可見性超時時間,則可能有助於防止多位消費者同時收到相同的消息。再次,它可能沒有什麼區別,但想提及它。 – jbird