sql >> Databáze >  >> RDS >> Sqlserver

Skupiny konverzace SQL Server Service Broker

Konverzační skupiny jsou místním primitivem používaným k zamykání. Zprávy v rámci konverzační skupiny nemají žádné záruky pořadí a konverzační skupiny neprobíhají přes drát.

Pořadí zpráv je garantováno Service Broker v rámci konverzace. Chcete-li tedy zachovat pořadí korelovaných zpráv při zpracování, pošlete je do stejné konverzace.

Skupiny konverzací jsou potřebné pro seskupení sady konverzací, které spolu souvisejí. Oba GET CONVERSATION GROUP a RECEIVE slovesa zaručují, že uzamknou celou konverzní skupinu, čímž zabrání jakémukoli jinému vláknu ve zpracování souvisejících zpráv. Zvažte například cestovatelské místo. Obdrží zprávu s požadavkem na rezervaci zájezdu. V důsledku toho zahájí konverzaci s hotelovou rezervační službou a odešle žádost o rezervaci pokoje, zahájí konverzaci s rezervační službou letecké společnosti a požádá o rezervaci cesty, zahájí konverzaci se službou autopůjčovny a požádá o rezervace auta. Tyto tři nové konverzace, které vytvořil, jsou všechny ve stejné skupině jako původní konverzace, ve které byl požadavek přijat (aplikace použila WITH RELATED_CONVERSATION klauzule BEGIN DIALOG na všech 3 z nich). Poté potvrdí a pokračuje ve zpracování zpráv ve frontě. Pozdější odpovědi z těchto 3 korelovaných požadavků začnou přicházet v téměř náhodných časech. Řekněme, že na prvním místě je odpověď hotelu. Zprávu si aplikace vyzvedne a pokračuje v aktualizaci stavu požadavku pomocí odpovědi z hotelu. Ve stejnou chvíli přijde odpověď letecké společnosti. Pokud by jiné vlákno mělo povoleno ji vyzvednout, pokusilo by se aktualizovat stav stejného požadavek, což má za následek zablokování nebo dokonce uváznutí proti vláknu, které zpracovává odpověď hotelu. Když je zpracována odpověď hotelu, vlákno se odevzdá, a tím odemkne celou konverzační skupinu, což umožní jakémukoli vláknu (včetně něj samotného) vyzvednout odpověď letecké společnosti a zpracovat ji.




  1. Vyhledejte v databázi Microsoft SQL Server uložená data

  2. chyba při instalaci psycopg2, knihovna nebyla nalezena pro -lssl

  3. Nejčastější problémy s MHA a jak je vyřešit

  4. Top 7 pracovních míst, které vyžadují SQL