gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:46:04 26 4
gpt4 key购买 nike

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

最佳答案

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

不过,您可以做的是估计等待时间(有趣的是,这个概念与 how Disneyland measures wait time in their lines 非常相似):

  1. 测量以下数据点(并了解它们何时发生变化):
    • 并行性 - 并行处理多少个项目?
    • processingTime - 处理一个项目需要多长时间?
    • queueLength - 队列中有多少项?
  2. 计算估算:
    • waitTimeOfNextItem = 队列长度 * 处理时间/并行度

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

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

虽然您也可以随机发送“时间卡”项目来进一步完善这一点(本质上是一个假项目,其纯粹的目的是计算通过系统需要多长时间),但您可以只在每次发送时发送此信息代替项目。

关于java - 队列中的消息位置/索引(SQS 或 RabbitMQ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54815164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com