Je ne suis pas sûr d'avoir complètement compris où vous voyez le problème. De
Certaines demandes ultérieures peuvent en fait être éligibles pour le traitement avant les précédentes.
Je suppose que vous êtes préoccupé par les demandes de mise en mémoire tampon qui ne peuvent pas être satisfaites maintenant mais qui peuvent être traitées rapidement.
Vous avez reçu une demande telle que
{ Amazon, X }
et en raison de (par exemple) la limitation X ne peut pas satisify cette demande en ce moment.
Ma première question serait: les demandes sont-elles indépendantes, c'est-à-dire que je peux traiter la demande Amazon immédiatement et mettre en file d'attente la demande X? Si c'est le cas, une file d'attente FIFO simple pour chaque service fera sûrement l'affaire. Vous devrez probablement avoir une taille de file d'attente maximale (étant donné que le délai d'expiration des requêtes HTTP est dépassé, vous ne pouvez pas attendre des heures).
Si vous envisagez de différer l'émission de la requête Amazon jusqu'à ce que vous puissiez émettre la requête X, les choses se compliquent. Je pense que vous avez en effet un problème de planification de réunion. Vous devez trouver un emplacement lorsque Amazon et X sont libres. Donc, vous pourriez avoir une sorte de liste de files d'attente, chaque file d'attente est pour que les demandes soient satisfaites dans cette unité de temps pour un service.
Amazon(3 per sec)
09:05:31 - request A, B, C
09:05:32 - request D, E, F
09:05:33 - request G - - <=== slots available
--- <=== times and slots available
X (2 per min)
09:05 - request M, N
09:06 - request O <=== slot available
Voici notre {Amazon, X} a une fente disponible à 09:06
Amazon(3 per sec)
09:05:31 - request A, B, C
09:05:32 - request D, E, F
09:05:33 - request G - - <=== slots available
--- <=== times and slots available
09:06:01 - request P
X (2 per min)
09:05 - request M, N
09:06 - request O, P
Personnellement, je commence par quelque chose de beaucoup plus simple: Si la demande ne peut être satisified en ce moment parce que tout une limite de service est atteinte, il suffit de rejeter la demande.