我想知道是否有通知sqs隊列結束的最佳做法。我產生了一羣通用工作者來從隊列中消費數據,並且我想通知他們,一旦他們在隊列中檢測不到更多消息,他們就可以停止處理。 sqs是否提供這種類型的功能?Amazon SQS隊列檢測結束
0
A
回答
0
通過查看SQS的right_aws ruby gem源代碼,我發現在隊列中存在ApproximateNumberOfMessages屬性。您可以使用標準的API調用請求。
你可以找到更多信息,包括的例子在這裏:
有關如何做到這一點使用Ruby中right_aws寶石看起來更加信息請訪問:
0
你的意思是「生產者是否有辦法通知消費者它已完成發送消息?」 。如果是這樣,那麼沒有。如果消費者調用「ReceiveMessage」並且不收回任何東西,或者「ApproximateNumberOfMessages」返回零,那麼這不能保證不會發送更多消息,或者甚至沒有消息在飛行中。而製作人不能發送任何類型的「流尾」消息,因爲只有一個消費者會收到該消息,並且可能無序到達。即使您使用單獨的通知機制(例如SNS主題)通知所有消費者,也無法保證在所有消息發送之前SNS通知都不會到達。
但是,如果您只希望在隊列中沒有留言時退出工作人員池,請考慮將隊列中的「ReceiveMessageWaitTimeSeconds」屬性設置爲最大值20秒。當沒有更多的消息要處理時,ReceiveMessage呼叫將阻塞高達20秒,以查看消息是否到達,而不是立即返回。
如果你擔心釋放資源,你可以管理你的線程池查詢ApproximateNumberOfMessages來管理你的線程池。如果這樣做,那麼請注意,您返回的數字是「近似值」,並且您應該始終假定即使ApproximateNumberOfMessages返回零,隊列中可能仍有一條或多條消息。
相關問題
- 1. Amazon Sqs FIFO隊列
- 2. Amazon SQS優先級隊列
- 3. Amazon SQS隊列和CodeIgniter
- 4. Amazon SQS隊列未收到消息
- 5. Amazon SQS(簡單隊列服務)速度?
- 6. 請解釋Amazon SQS(一般排隊)
- 7. 亞馬遜SQS子隊列
- 8. AWS-CLI - SQS列表隊列
- 9. 使用Amazon SQS和SNS設計推送隊列,如何?
- 10. Amazon SQS - FIFO隊列消息請求,不一致接收
- 11. 如何接收來自Amazon SQS隊列的通知
- 12. 在Java中異步處理來自隊列的Amazon SQS消息
- 13. 如何在Laravel隊列中容納Amazon FIFO SQS?
- 14. 如何確認消息傳遞到Amazon SQS隊列?
- 15. 在Ruby中創建Amazon AWS SQS隊列時指定區域?
- 16. Amazon SQS:獲取在隊列上收聽消費者的數量
- 17. Laravel:如何使用Amazon SQS處理隊列
- 18. 每當Amazon SQS隊列更新時運行Ruby任務
- 19. Amazon SQS死信隊列:它真的是死信還是毒藥?
- 20. Amazon AWS SQS - 將QueuePolicy應用於現有隊列
- 21. 如何確認將Amazon-SNS消息傳遞給SQS隊列?
- 22. Amazon AWS Worker不會刪除SQS隊列中的消息
- 23. 類「SendEmail」沒有找到,而這樣做Amazon SQS隊列
- 24. AWS SQS API:列出非空隊列
- 25. Ruby1.9和Amazon SQS?
- 26. 使用Spark寫入AWS SQS隊列
- 27. Nodejs sqs隊列處理器
- 28. 亞馬遜SQS消息隊列
- 29. SQS記錄插入隊列和從隊列中刪除
- 30. 流明5.1 SQS隊列配置
您是否試過閱讀文檔?如果是這樣,你覺得不清楚呢? – willglynn