Dokud necháte indexování/přeindexování běžet odděleně od vaší aplikace, budete mít problémy se synchronizací. V závislosti na oblasti vaší práce to nemusí být problém, ale u mnoha aplikací se souběžným uživatelem ano.
Měli jsme stejné problémy, když jsme měli systém úloh spouštějící asynchronní indexování každých pár minut. Uživatelé by našli produkt pomocí vyhledávače, a i když administrativní osoba odstranila produkt z platného zásobníku produktů, stále jej nacházela na frontendu, dokud neproběhla další úloha reindexace. To vede k velmi matoucím a zřídka reprodukovatelným chybám hlášeným na podporu první úrovně.
Viděli jsme dvě možnosti:Buď těsně propojit obchodní logiku s aktualizacemi vyhledávacího indexu, nebo implementovat přísnější úlohu asynchronní aktualizace. Udělali jsme to druhé.
Na pozadí běží třída ve vyhrazeném vláknu uvnitř aplikace kocour, která přijímá aktualizace a spouští je paralelně. Čekací doby na aktualizace backoffice na frontendu jsou 0,5-2 sekundy, což výrazně snižuje problémy s podporou první úrovně. A je to tak volně propojené, jak jen může být, mohli bychom dokonce implementovat jiný indexovací stroj.