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

Broker usług serwera SQL

Grupy wątków są lokalne tylko pojęcie, używane wyłącznie do blokowania:skorelowane konwersacje należą do grupy, więc podczas przetwarzania wiadomości w jednej konwersacji inny wątek nie może przetworzyć skorelowanej wiadomości. Nie ma informacji o grupach konwersacji wymienianych przez dwa punkty końcowe, więc w przykładzie wszystkie punkty końcowe inicjatora należą do jednej grupy konwersacji, ale docelowe punkty końcowe to każda odrębna grupa konwersacji (każda grupa ma tylko jedną konwersację). Powodem, dla którego system zachowuje się w ten sposób, jest to, że grupy konwersacyjne są zaprojektowane tak, aby rozwiązać problem, taki jak, powiedzmy, usługa rezerwacji podróży:kiedy otrzymuje wiadomość „zarezerwuj wycieczkę”, musi zarezerwować lot, hotel i samochód wynajem. Musi wysłać trzy komunikaty, po jednym do każdej z tych usług („loty”, „hotele”, „samochody”), a następnie odpowiedzi wrócą asynchronicznie. Kiedy wracają, przetwarzanie musi zapewnić, że nie są one przetwarzane jednocześnie przez oddzielne wątki, z których każdy próbowałby zaktualizować status rekordu „podróż”. W wiadomościach ten problem jest znany jako „problem korelacji wiadomości”.

Jednak często grupy konwersacyjne są wdrażane w SSB wyłącznie ze względu na wydajność:pozwalają na większe wyniki ODBIORU. Docelowe punkty końcowe można przenieść razem do grupy za pomocą PRZENIEŚ ROZMOWY ale w praktyce jest dużo prostsza sztuczka:odwróć kierunek rozmowy. Miej swoje miejsce docelowe rozpocznij rozmowy (zgrupowane) i źródło wysyła swoje „aktualizacje” dotyczące konwersacji rozpoczętych przez miejsce docelowe.

Kilka uwag:

  • Nie używaj wzorca „uruchom i zapomnij” BEGIN/SEND/END. Uniemożliwiasz zdiagnozowanie jakiegokolwiek problemu w przyszłości, zobacz Ogień i zapomnij:dobre dla wojska, ale nie dla rozmów z Service Brokerem .
  • Nigdy nie używaj WITH CLEANUP w kodzie produkcyjnym. Jest przeznaczony do działań administracyjnych ostatniej szansy, takich jak odzyskiwanie po awarii. Jeśli go nadużyjesz, odmówisz SSB jakiejkolwiek szansy na prawidłowe śledzenie wiadomości w celu prawidłowego dostarczenia ponownych prób (jeśli wiadomość odbije się od celu, z jakiegokolwiek powodu, zostanie utracona na zawsze).
  • SSB nie gwarantuje porządku w rozmowach, tylko w ramach jednej rozmowy. Rozpoczęcie nowej konwersacji dla każdego zdarzenia INSERT nie gwarantuje zachowania docelowej kolejności operacji wstawiania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zrozumienie instrukcji DROP TABLE w SQL Server

  2. Skryptuj wszystkie dane z bazy danych SQL Server

  3. Jak uciec przed znakiem procentu w T-SQL?

  4. Dołączanie do rekordu daty MAX w grupie

  5. Generatory danych dla serwera SQL?