为了账号安全,请及时绑定邮箱和手机立即绑定

队列中的消息位置/索引(SQS 或 RabbitMQ)

队列中的消息位置/索引(SQS 或 RabbitMQ)

呼唤远方 2022-06-30 18:30:13
我有兴趣在 FIFO 队列中查找消息的位置。目标是能够向用户显示“您排在第三位”,然后是“您排在第二位”,然后是“您的请求正在处理中”。我可以访问 AWS SQS 和 RabbitMQ。我知道我可以得到队列中的消息总数,我只是不知道我关心的消息在哪里。到目前为止,我已经阅读了有关排队技术的文档,但还没有看到解决方案,因此还没有编写任何代码。有没有其他人能够成功找到单个消息的索引/位置?
查看完整描述

1 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

无法获取项目的“索引”。

不过,您可以做的是估算等待时间(有趣的是,这个概念与迪士尼乐园在排队时测量等待时间的方式非常相似):

  1. 测量以下数据点(并知道它们何时发生变化):

    • parallelism- 并行处理多少个项目?

    • processingTime- 处理一件物品需要多长时间?

    • queueLength- 队列中有多少项目?

  2. 计算估计:

    • waitTimeOfNextItem = queueLength * processingTime / parallelism

例如,如果队列中有 100 个项目,每个项目大约需要 10 秒来处理,而您一次处理 4 个,则100*10/4处理所有项目需要 250 秒。如果将第 101 个项目放入队列,您可以估计它将在 250 秒后开始处理。

如果您的processingTime变化很大,您可以进行滚动平均或抽样等计算,或提供时间范围(5-10 分钟),具体取决于您想要的准确度。

虽然您也可以随机发送“时间卡”项目以进一步完善这一点(本质上是一个纯粹用于计算通过系统所需时间的假项目),但您可以只发送此信息与每个项目。


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 291 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号