Имам две почивка 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".