Udostępnij za pośrednictwem


Blokady grupy konwersacji

Service Broker wykorzystuje grupa konwersacji blokad zagwarantować tylko jedna kolejka reader można pracować z zestaw pokrewnych wiadomości na dowolnym podane czas.Service Broker wykorzystuje grupa konwersacji blokady do zagwarantowania, że wiadomości są przetwarzane tylko raz w kolejności.

Wszystkie konwersacje należą do grupa konwersacji.Domyślnie, każdy konwersacji należy do innej grupa konwersacji, i dlatego ma inną grupa konwersacji identyfikator.Instrukcja przenieść KONWERSACJI zmienia grupa konwersacji do konwersacji.Instrukcja rozpocząć KONWERSACJĘ okno DIALOGOWE zawiera opcje kojarzenie nową konwersację z istniejącej grupa konwersacji.Więcej informacji na temat konwersacji grup, zobacz Grupy konwersacji.

Zablokuj grupa konwersacji jest w efekcie blokada na wyłączność zestaw komunikatów, które współużytkują ten sam identyfikator grupa konwersacji.Blokady grupy konwersacji są przeznaczone dla uproszczenia, skuteczności i prawidłowości.Nie ma żadnych jawne polecenie lub wskazówka dla nabycia lub zwalniania blokada grupa konwersacji.Zamiast tego, co polecenie Service Broker dotyczy grupy okna dialogowego lub konwersacji nabywa grupy konwersacji odpowiednie blokada automatycznie.Na przykład instrukcja DIALOG Rozpocznij blokuje grupa konwersacji, w której nowe okno dialogowe, dlatego instrukcji ODBIERZ blokuje grupa konwersacji odebranych wiadomości należących do.

Sesji przechowuje blokada grupa konwersacji na czas trwania transakcji, w ciągu którego sesja nabyte blokada.Sesja nie mogą pomieścić blokada grupa konwersacji całej transakcji; Po zakończeniu transakcji wszystkich grupa konwersacji blokad podczas transakcji są zwalniane.

Blokowanie występuje dla grupa konwersacji, zamiast identyfikatora konwersacji.Dlatego blokada dotyczy tylko po jednej stronie konwersacji, nawet wtedy, gdy inicjator i miejsce docelowe są w tej samej bazy danych.A blokada nabyte przez obiekt miejsce docelowe usługa wykonuje b nieblokada usługi inicjujący i odwrotnie.Dalsze, Aparat baz danych nie wymusza blokowania podczas dodawania przychodzące wiadomości do kolejki. Aparat baz danych Dodaje wiadomości do kolejki, nawet wtedy, gdy aplikacja grupa konwersacji blokada na grupa konwersacji wiadomości należących do.

W praktyce oznacza to, że aplikacja używa tylko identyfikatory pobierane z Service Broker nie trzeba czekać do nabywania blokad zasobów Service Broker.Większość aplikacji Service Broker są przeznaczone do zalet blokowania dostarczane przez usługę Broker.Oznacza to, że większość aplikacji Service Broker tylko użyć grupa konwersacji identyfikatorów i uchwyty konwersacji, które zostały otrzymane z instrukcja Service Broker w obrębie tej samej transakcji.

Na przykład aplikacja zazwyczaj pobiera identyfikator grupa konwersacji z Service Broker, pobiera stan z tabela stanu i następnie przetwarza wiadomości dla konwersacji w tej grupie konwersacji.Gdy aplikacja uzyskuje identyfikator grupa konwersacji, aplikacja ma blokada na grupa konwersacji: inne wystąpienie aplikacji można uzyskać blokada.Jednakże grupa konwersacji blokada nie innych wystąpień aplikacji odbieranie wiadomości dla innych grup konwersacji, a nie zapobiega przychodzące wiadomości przychodzące do kolejki.

Z tej strategii blokowania Service Broker można zagwarantować przetwarzania wiadomości w kolejności.Ponieważ tylko jedna kolejka czytnik przetwarza wiadomości w konwersacji danej grupy, nie istnieje ryzyko dwie kolejki czytników odbieranie wiadomości z tej samej grupa konwersacji, w tym samym czas.Szczególne konwersacji instrukcja ODBIERZ zwraca wiadomości w kolejności, w jakiej zostały wysłane wiadomości, tak wielu czytelników kolejki może przetwarzać wiadomości z kolejki, bez konieczności jawnie koordynacji zamawiania.

Ponieważ blokowanie operuje na grupa konwersacji, a nie poszczególnych konwersacji, czytnik kolejki, których nie określono określonego konwersacji w instrukcja ODBIERZ mogą odbierać wiadomości z różnych konwersacji, które należą do tej samej grupa konwersacji.Ponadto instrukcja ODBIERZ zwraca dostępne następnej wiadomości w kolejce, niezależnie od tego, czy wiadomość jest częścią grupa konwersacji, która jest aktualnie odblokowane lub zablokowane w bieżącej transakcji.Aby otrzymywać wiadomości od wybranej konwersacji, określić dojście do konwersacji w instrukcja ODBIERZ.Do odbierania wiadomości z grupy wybranej konwersacji, należy określić identyfikator grupa konwersacji w instrukcja ODBIERZ.

Z tej strategii blokada aplikacji należy uzyskać blokadę grupa konwersacji przed zaktualizowaniem tabela stan aplikacji.Większość z czas, odbywa się to automatycznie kiedy aplikacja odbiera wiadomość lub pobiera grupa konwersacji.Podczas obsługi błędów, jednak aplikacja może być konieczne ponownie pobrać blokada grupa konwersacji przed zaktualizowaniem tabela stanu, aby wskazać błąd.Więcej informacji na temat obsługa błędów, zobacz Obsługa błędów programu Service Broker.

Poniższe instrukcje Pobieranie blokady grupa konwersacji: