Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Grupy konwersacyjne dla brokerów usług SQL Server

Grupy wątków to lokalny element podstawowy używany do blokowania. Wiadomości w ramach grupy konwersacyjnej nie mają gwarancji kolejności, a grupy konwersacyjne nie przepływają przez przewód.

Kolejność wiadomości gwarantuje Service Broker w ramach konwersacji. Aby więc zachować kolejność powiązanych wiadomości podczas przetwarzania, wyślij je w tej samej rozmowie.

Grupy wątków są potrzebne do grupowania zestawu wątków, które są ze sobą powiązane. Oba GET CONVERSATION GROUP i RECEIVE czasowniki gwarantują, że zablokują całą grupę konwersacyjną, zapobiegając w ten sposób przetwarzaniu powiązanych komunikatów przez inny wątek. Weźmy na przykład witrynę podróżniczą. Otrzymuje wiadomość z prośbą o rezerwację pakietu wakacyjnego. W efekcie inicjuje rozmowę z serwisem rezerwacji hoteli i wysyła prośbę o rezerwację pokoju, inicjuje rozmowę z serwisem rezerwacji linii lotniczych i prosi o rezerwację podróży, inicjuje rozmowę z serwisem wypożyczalni samochodów i prosi o rezerwacja samochodu. Te trzy nowe konwersacje, które utworzył, znajdują się w tej samej grupie, co początkowa konwersacja, w której odebrano żądanie (aplikacja użyła WITH RELATED_CONVERSATION klauzula BEGIN DIALOG na wszystkich 3 z nich). Następnie zatwierdza i przystępuje do przetwarzania wiadomości w kolejce. Późniejsze odpowiedzi z tych 3 skorelowanych żądań zaczynają napływać w dość losowych momentach. Załóżmy, że odpowiedź hotelu pojawia się jako pierwsza. Wiadomość jest odbierana przez aplikację i kontynuuje aktualizację statusu żądania wraz z odpowiedzią hotelu. W tym samym czasie nadchodzi odpowiedź linii lotniczej. Gdyby inny wątek mógł ją odebrać, próbowałby zaktualizować stan tego samego żądanie, co skutkuje zablokowaniem lub nawet zakleszczeniem wątku, który przetwarza odpowiedź hotelu. Gdy odpowiedź hotelu jest przetwarzana, wątek zatwierdza, a tym samym odblokowuje całą grupę konwersacyjną, umożliwiając dowolnemu wątkowi (w tym sobie) odebranie odpowiedzi linii lotniczej i przetworzenie jej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykłady konwersji „data” na „datetime” w SQL Server (T-SQL)

  2. Obejście dla obsługi kursora nie jest zaimplementowaną funkcją dla błędu SQL Server Parallel DataWarehousing TDS

  3. Jak utworzyć unikalne ograniczenie na kolumnie dla już istniejącej tabeli — samouczek SQL Server / TSQL część 97

  4. Opóźniona trwałość w SQL Server 2014

  5. Jak uzyskać pierwszy i ostatni dzień poprzedniego miesiąca (ze znacznikiem czasu) w SQL Server