sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server Service Broker Samtalegrupper

Samtalegrupper er et lokalt primitv, der bruges til låsning. Beskeder inden for en samtalegruppe har ingen ordregarantier, og samtalegrupper flyder ikke hen over ledningen.

Beskedordren er garanteret af Service Broker i en samtale. Så for at bevare rækkefølgen af ​​korrelerede meddelelser under behandling, send dem i den samme samtale.

Samtalegrupper er nødvendige for at gruppere et sæt samtaler, der er relateret til hinanden. Begge GET CONVERSATION GROUP og RECEIVE verber garanterer, at de vil låse en hel konversationsgruppe, hvilket forhindrer enhver anden tråd i at behandle relaterede meddelelser. Overvej for eksempel en rejseside. Den modtager en besked med en anmodning om at bestille en feriepakke. Som et resultat indleder den en samtale med en hotelreservationstjeneste og sender en anmodning om at reservere et værelse, den indleder en samtale med en flyselskabsreservationstjeneste og beder om rejsereservation, den indleder en samtale med et biludlejningsbureau og beder om en bilreservation. Disse tre nye samtaler, den oprettede, er alle i den samme gruppe med den første samtale, som anmodningen blev modtaget på (applikationen har brugt WITH RELATED_CONVERSATION klausul af BEGIN DIALOG på dem alle 3). Den forpligter sig derefter og fortsætter med at behandle meddelelserne i køen. Senere svar fra disse 3 korrelerede anmodninger begynder at komme ind, på stort set tilfældige tidspunkter. Sig, at hotelresponsen kommer først. Beskeden bliver samlet op af applikationen, og den fortsætter med at opdatere status for anmodningen med svaret fra hotellet. Samtidig kommer flyselskabets svar ind. Hvis en anden tråd ville få lov til at samle det op, ville den forsøge at opdatere status for den samme anmodning, hvilket resulterer i blokering eller endda dødvande mod den tråd, der behandler hotelsvaret. Når hotelsvaret er behandlet, binder tråden sig og låser dermed hele samtalegruppen op, hvilket giver enhver tråd (inklusive sig selv) mulighed for at hente flyselskabets svar og behandle det.




  1. Udbyderen er ikke kompatibel med versionen af ​​Oracle-klienten

  2. Sådan implementeres MariaDB Server til en Docker Container

  3. Hvordan installeres postgres med NSIS med alle parametre?

  4. Sådan stoppes/startes databasens postkø i SQL Server (T-SQL)