我有興趣在 FIFO 隊列中查找消息的位置。目標是能夠向用戶顯示“您排在第三位”,然后是“您排在第二位”,然后是“您的請求正在處理中”。我可以訪問 AWS SQS 和 RabbitMQ。我知道我可以得到隊列中的消息總數,我只是不知道我關心的消息在哪里。到目前為止,我已經閱讀了有關排隊技術的文檔,但還沒有看到解決方案,因此還沒有編寫任何代碼。有沒有其他人能夠成功找到單個消息的索引/位置?
1 回答

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
無法獲取項目的“索引”。
不過,您可以做的是估算等待時間(有趣的是,這個概念與迪士尼樂園在排隊時測量等待時間的方式非常相似):
測量以下數據點(并知道它們何時發生變化):
parallelism
- 并行處理多少個項目?processingTime
- 處理一件物品需要多長時間?queueLength
- 隊列中有多少項目?計算估計:
waitTimeOfNextItem = queueLength * processingTime / parallelism
例如,如果隊列中有 100 個項目,每個項目大約需要 10 秒來處理,而您一次處理 4 個,則100*10/4
處理所有項目需要 250 秒。如果將第 101 個項目放入隊列,您可以估計它將在 250 秒后開始處理。
如果您的processingTime
變化很大,您可以進行滾動平均或抽樣等計算,或提供時間范圍(5-10 分鐘),具體取決于您想要的準確度。
雖然您也可以隨機發送“時間卡”項目以進一步完善這一點(本質上是一個純粹用于計算通過系統所需時間的假項目),但您可以只發送此信息與每個項目。
添加回答
舉報
0/150
提交
取消