Невозможно получить «индекс» элемента.
Что вы можете сделать, так это получить оценку времени ожидания (что интересно, эта концепция очень похожа как Диснейленд измеряет время ожидания в своих строках ):
- Измерьте следующие точки данных (и узнайте, когда они изменятся):
parallelism
- Сколькоэлементы обрабатываются параллельно? processingTime
- Сколько времени занимает обработка элемента? queueLength
- Сколько элементов в очереди?
- Рассчитать оценку:
waitTimeOfNextItem = queueLength * processingTime / parallelism
Например, если в очереди 100 элементов, и каждый займет около10 секунд на обработку, и вы обрабатываете 4 сразу, тогда для обработки всех элементов потребуется 100*10/4
или 250 секунд.Если бы в очередь был помещен 101-й элемент, можно было бы ожидать, что он начнет обрабатываться через 250 секунд.
Если ваш processingTime
сильно варьируется, вы можете выполнять вычисления, такие как скользящее среднее или выборка, или указывать временной диапазон (5-10 минут), в зависимости от того, насколько точным вы хотите быть.
В то время как вы также можете случайным образом посылать элементы «временной карты», чтобы уточнить это далее (по сути, поддельный элемент, который имеет целью просто подсчитать, сколько времени требуется, чтобы пройти через систему), вы можете просто отправить эту информацию с каждым элементомвместо этого.