/ / Vyčistiť vlákno / vlákno na pozadí alebo proces / službu v Java - java, multithreading, proces na pozadí

Vyčistiť Thread / pozadia Thread alebo Process / Service V jazyku Java - java, multithreading, background-process

Mám projekt java, ktorý je zabalený ako nádobaa bežať. Kód interaguje s 2 databázami, primárnou databázou a sekundárnou databázou. Tabuľka X existuje v primárnej aj sekundárnej DB s rovnakou štruktúrou.

Vlákno java v kóde používa prepojené blokovaniefrontu a do tohto frontu sa pridá každý dotaz DML, ktorý sa spúšťa v tabuľke X v primárnej DB. Vlákno stále kontroluje, či bol do frontu pridaný nový objekt dotazu DML a vykonáva ho na sekundárnej DB.

Na konci dňa je požiadavka vymazanávšetky riadky v tabuľke X pre daný deň, ale predtým sme zladili tabuľku X v databázach av prípade nesúladu počtu riadkov sa chýbajúce riadky najskôr vložia do sekundárnej DB a potom sa odstránia z primárnej DB.

Tu čelím 2 problémom:

Prvým problémom je, že keď sa zvyšuje počet dopytov DML pridaných do frontu, vykonávanie týchto dotazov sa stáva pomalým.

Po druhé, ak sa nádoba zastaví a znovaPo reštartovaní sa dotazy DML, ktoré sa pridali do frontu, ale ešte sa nevykonali, stratia, pretože fronta je v pamäti a ako také sa tieto riadky nikdy nepresunú do sekundárnej DB.

Hľadám prístup, ktorý bol v roku imôže navrhovať buď službu na pozadí alebo externú službu, ktorá beží ďalej, bez ohľadu na to, či je hlavná nádoba spustená alebo zastavená, a ďalej vykonáva replikáciu dotazov DML z primárnej databázy DB na sekundárnu databázu.

odpovede:

0 pre odpoveď č. 1

Mal som túto myšlienku, ktorá by sa dala urobiť buď dodatočne alebo ako alternatíva k základnej službe:

Predpokladajme, že vaše databázové operácie sú veľaťažšie ako vloženie jednoduchého reťazca do malej databázy, môžete dotazy vložiť do databázy ako obyčajný text a po spustení ich odstrániť. Týmto spôsobom, ak niečo zlyhá počas cesty, môžete pokračovať vo fronte otázok, kde sa nachádzal. Fronta sama o sebe vytrvá ... Mohli by sme mať niečo také:

Generátor dotazov> Dotaz DB> Služba vykonávania dotazov> Final DB

Po druhé, hovoríte „ako počet otázok DMLpridané do frontu sa zvyšuje, vykonávanie týchto dotazov sa stáva pomalým. “Ako môže byť váš front dotazov taký ťažký? Možno by ste mali skontrolovať možné úniky pamäte.