/ / Traite les problèmes de latence lorsque deux extrémités REST lisent les mêmes données - java, mongodb, reste, spring-mvc, spring-boot

Traitez les problèmes de latence lorsque deux extrémités REST lisent les mêmes données - java, mongodb, repos, spring-mvc, spring-boot

J'ai deux api "s de repos. J'utilise Spring Boot et MongoDB.

En premier lieu, le client appelle la API qui insère un enregistrement dans une collection Mongo. Après quelques secondes, l’application api2 essaie de lire l’enregistrement d’insertion et effectue un processus.

Mais il y a des situations où l'api2 essaie de lire l'enregistrement, il n'a pas été inséré dans la collection en raison de la latence de api1.

Dans ce cas, l'api2 ne peut pas exécuter le processus.

Une option à laquelle je peux penser, quand api2 lit le disque, et si elle n’est toujours pas insérée dans le mongo, dors la thead pendant quelques secondes et réveille-la (peut faire peu de temps jusqu’à ce que le disque existe)

Quelles autres options j'ai?

Mettre à jour: Les deux api "s sont indépendants. Le flux est comme lorsque, une fois la vidéo téléchargée, elle appelle api1 et insère un média avec un refid et la fin de ce flux. Ensuite, l'application reçoit un rappel d'un système de traitement vidéo externe sur api2, une fois le transcodage vidéo terminé (généralement après une trentaine de secondes) avec le refid, lequel api2 effectue ensuite certaines mises à jour du support inséré. Il y a un cas extrême, pour les vidéos de très petite taille, le système vidéo externe agit rapidement et donne le rappel lorsque, à ce moment-là, mon application insère toujours le support dans le Mongo.

Réponses:

1 pour la réponse № 1

Je suggère que votre api1 une fois que c'est faitappelle api2 et lui transmet l'identifiant qu'il a inséré. De cette façon, api2 ne devrait jamais fonctionner prématurément. L’autre méthode consiste à utiliser une file d’attente où api1 placera un message et api2 le consommera et le traitera (crédit de l’utilisateur @warge qui l’a mentionné dans son commentaire).


0 pour la réponse № 2

De votre cas d'utilisation, vous n'avez pas beaucoup de choix.

La méthode la plus simple consiste à créer le document au moment du téléchargement, de sorte que api1 et api2 seront mis à jour à ce sujet et qu'il n'y aura pas d'exception "introuvable".