Udostępnij za pośrednictwem


Blokowanie grupa konwersacji

usługa Broker wykorzystuje grupa konwersacji blokad zagwarantowanie, czy czytnik tylko jedna kolejka może współpracować z zestaw pokrewnych wiadomości na dowolnym podane czas.usługa Broker wykorzystuje grupa konwersacji blokad zagwarantować, że wiadomości są przetwarzane tylko raz w kolejności.

Wszystkie konwersacje należą do grupa konwersacji.Domyślnie, należy każdej konwersacji z innym grupa konwersacji, i dlatego ma inną grupa konwersacji identyfikator.Instrukcja MOVE KONWERSACJI zmienia grupa konwersacji do konwersacji.Instrukcja BEGIN KONWERSACJI DIALOG zawiera opcje dotyczące kojarzenia konwersacji nowy z istniejącego grupa konwersacji.Aby uzyskać więcej informacji na temat grupy konwersacji zobacz Grupy konwersacji.

Blokada grupa konwersacji jest w efekcie blokada na wyłączność zestaw komunikatów, które współużytkują ten sam identyfikator grupa konwersacji.Blokady grupa konwersacji są przeznaczone dla uproszczenia, wydajności i poprawności.Nie ma ma jawne polecenia lub wskazówki dla pobieranie lub zwalniania blokada grupa konwersacji.Zamiast tego, co polecenie usługa Broker, które ma wpływ na grupę w oknie dialogowym lub konwersacji nabywa grupa konwersacji odpowiednie blokada automatycznie.Na przykład instrukcji BEGIN DIALOG blokuje grupa konwersacji, w której należy nowe okno dialogowe, podczas gdy instrukcja przyjęcie blokuje odebranych wiadomości należące do grupa konwersacji.

Sesja przechowuje blokada grupa konwersacji przez cały czas trwania transakcji, w którym sesja nabyte blokada.Sesja nie może zawierać blokada grupa konwersacji całej transakcji, po zakończeniu transakcji wszystkich blokad grupa konwersacji, uzyskane podczas transakcji są zwalniane.

Blokowanie występuje dla grupa konwersacji, a nie dla identyfikatora konwersacji.W związku z tym blokada dotyczy tylko po jednej stronie konwersacji, nawet wtedy, gdy zarówno inicjatora, jak i miejsce docelowe znajdują się w tej samej bazy danych.Blokada nabytych przez usługa miejsce docelowe nie blokuje inicjujący usługa i na odwrót.Dalsze, Database Engine nie wymusza blokowania podczas dodawania do kolejki wiadomości przychodzących. The Database Engine adds messages to the queue even when an application has a grupa konwersacji blokada on the grupa konwersacji that the messages belong to.

W praktyce oznacza to, że aplikacja używa tylko identyfikatory pobierane z usługa Broker nie musi czekać na uzyskanie blokady usługa Broker zasobów.Większość aplikacji usługa Broker są tak zaprojektowane, aby korzystać z dostarczonych przez usługa Broker blokowania.Oznacza to tylko używać większości aplikacji usługa Broker grupa konwersacji identyfikatorów i uchwyty konwersacji, które zostały otrzymane z instrukcja usługa Broker w obrębie tej samej transakcji.

Na przykład aplikacji zwykle uzyskuje identyfikator grupy do konwersacji z usługa Broker, pobiera stan z tabela stanu, a następnie przetwarza wiadomości w 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 blokadę grupa konwersacji inne wystąpienia aplikacji z odbierania wiadomości dla innych grup konwersacji, a nie zapobiega przychodzących wiadomości przychodzące do kolejki.

Z tej strategii blokowania usługa Broker mogą zagwarantować przetwarzania wiadomości w kolejności.Ponieważ tylko jedna kolejka czytnika może przetwarzać wiadomości w konwersacji danej grupy, nie istnieje ryzyko dwie kolejki czytników odbierania wiadomości w tej samej grupa konwersacji, w tym samym czasie.Dla określonych konwersacji instrukcja przyjęcie zwraca wiadomości w kolejności, w jakiej zostały wysłane wiadomości, tak wiele narzędzi do odczytywania zawartości kolejki może przetwarzać wiadomości z kolejki, bez konieczności jawnie koordynować kolejności.

Ponieważ blokowanie operuje na grupa konwersacji, a nie dla poszczególnych rozmowy, czytnik kolejki, które nie są określone wybranej konwersacji w instrukcja przyjęcie może odbierać wiadomości z różnych konwersacji, które należą do tej samej grupa konwersacji.Ponadto instrukcja przyjęcie zwraca następny dostępny wiadomości w kolejce, niezależnie od tego, czy wiadomości jest częścią grupa konwersacji, która jest aktualnie odblokowane lub jest zablokowany w bieżącej transakcji.Aby otrzymywać wiadomości od wybranej konwersacji, należy określić uchwyt konwersacji w instrukcja przyjęcie.Do odbierania wiadomości z grupy wybranej konwersacji, należy określić identyfikator grupa konwersacji w instrukcja przyjęcie.

W wyniku zastosowania tej strategii blokada aplikacja powinna nabyć blokada grupa konwersacji przed aktualizacją tabela stanu dla aplikacji.Większość z czas, ma to miejsce 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 aktualizacją tabela stanu, aby wskazać błąd.Aby uzyskać więcej informacji na temat obsługa błędów Zobacz Błąd obsługi dla usługa Broker.

Poniższe instrukcje uzyskać blokad grupa konwersacji: