/ / Проблем с латентността, когато две REST крайни точки четат едни и същи данни - java, mongodb, rest, spring-mvc, spring-boot

Обърнете внимание на проблемите при латентност, когато две крайни точки за REST прочитат едни и същи данни - java, mongodb, rest, spring-mvc, spring-boot

Имам две почивка api "и. Използвам пролетта обувка и MongoDB.

Първо клиентът извиква api1, който вмъква запис в колекция mongo. След няколко секунди api2 се опита да прочете записа и да направи някакъв процес.

Но има ситуация, когато api2, опитайте се да прочетете записа, не е бил вмъкнат в колекцията поради латентност от api1.

В този случай api2 не е в състояние да извърши процеса.

Една опция, за която мога да се сетя, когато api2 прочете записа, и ако все още не е вмъкнат в mongo, заспиваме за няколко секунди и се събуждаме (може да направим малко време до записа)

Какви други възможности имам?

Update: Двете апи са независими. Потокът прилича на това, когато при завършване качите видеоклип, който той нарича api1 и вмъкнете носител с refid и този поток. След това приложението получава обратно извикване от външна система за обработка на видео към api2, след като видео транскодирането завърши (обикновено след 30-те години) с refid, което след това изпълнява някои актуализации на вмъкнатата медия. Има един край случай, за много малък размер видео външната видео система действа бързо и дава обратно извикване, когато по това време моята кандидатура все още вмъкване на медиите в mongo

Отговори:

1 за отговор № 1

Предполагам, че вашият api1 веднъж направенизвиква api2 и му предава идентификатора, който е вмъкнал. По този начин api2 никога не би трябвало да работи преждевременно. Другият начин е да се използва опашка, където api1 ще постави съобщение и api2 изразходва съобщението и го обработва (кредитира се на @warge потребител, който го спомена в неговия коментар)


0 за отговор № 2

От твоя случай нямаш много избор.

чистият начин да направите това е да създадете документа при качване, така че api1 и api2 да се актуализират на това, и няма да има изключение "not found".