我有兴趣在 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
提交
取消
