/ / Zvládnite problémy s oneskorením, keď dva koncové body REST načítajú rovnaké údaje - java, mongodb, odpočinok, jar-mvc, jar-boot

Správa problémov oneskorenia, keď dva koncové body REST čítajú rovnaké dáta - java, mongodb, rest, spring-mvc, spring-boot

Mám dva odpočívadlá. Používam Spring Boot a MongoDB.

Po prvé, klient vyvolá api1, ktorý vloží záznam do zbierky mongo. Potom sa po niekoľkých sekundách api2 pokúsi prečítať vložený záznam a urobiť nejaký proces.

Ale sú situácie, keď sa api2 pokúsi prečítať záznam, nebol vložený do zbierky kvôli latencii api1.

V takom prípade api2 nedokáže tento proces vykonať.

Jedna z možností, na ktorú si myslím, že keď si api2 prečíta záznam, a ak sa ešte stále nevkladá do mongo, spí na niekoľko sekúnd kúzlo a prebudí ho (môže to trvať, kým záznam neexistuje)

Aké ďalšie možnosti mám?

aktualizácia: Obidva api sú nezávislé. Tok je ako keď po dokončení odovzdania videa zavolá api1 a vloží médium s refid a tento tok skončí. Potom aplikácia prijme spätné volanie z externého systému na spracovanie videa do api2, po dokončení transkódovania videa (zvyčajne po 30 s) s refid, ktorý api2 potom vykoná nejaké aktualizácie vloženého média. Existuje okrajový prípad, pre veľmi malú veľkosť videa funguje externý video systém rýchlo a poskytuje spätné volanie, kde moja aplikácia v tom čase stále vkladá médiá do Mníchova.

odpovede:

1 pre odpoveď č. 1

Navrhoval by som, aby ste svoj api1 urobilivyvolá api2 a odovzdá mu ID, ktoré vložil. Týmto spôsobom by api2 nikdy nemusel bežať predčasne. Druhým spôsobom je použitie frontu, kde api1 vloží správu a api2 správu spotrebuje a spracuje (kredit používateľovi @warge, ktorý ju uviedol vo svojom komentári)


0 pre odpoveď č. 2

Z vášho prípadu použitia nemáte na výber toľko.

čistým spôsobom je vytvoriť dokument v čase odovzdania, takže api1 a api2 sa v tomto aktualizujú a nebude existovať žiadna výnimka „nenájdená“.