Udostępnij za pośrednictwem


Opis, kiedy występuje aktywacja

The Service Broker aktywacja process consists of two steps. Pierwszy, Service Broker Określa, czy konieczna jest aktywacja. Drugi, Service Broker Określa, czy aktywacja wystąpienia. Mimo że dokładne proces różni się dla aktywacja wewnętrznych i zewnętrznych aktywacja, ogólne pojęcia związane są takie same dla obu strategii.

Określanie, czy konieczna jest Aktywacja

Aktywacja jest to konieczne, za każdym razem, gdy nowe czytnika kolejki musi przydatne pracy do wykonania.Queue monitors determine whether activation is necessary.Service Broker creates a queue monitor for each queue with activation STATUS = ON or for which a QUEUE_ACTIVATION event notification has been registered.dynamiczny widok zarządzania sys.dm_broker_queue_monitors (Transact-SQL) Wyświetla listę aktywnych monitorów kolejki w wystąpienie. Każdy monitor kolejka śledzi następujące czynności:

Określa, czy kolejka zawiera wiadomości, które są gotowe do odbierania

Jak ostatnio instrukcja przyjęcie w kolejce zwracany jest zestaw wyników puste

Ile procedury aktywacja przechowywane są obecnie uruchomione dla kolejki.

Monitorowanie kolejki sprawdza, czy Aktywacja jest niezbędne, co kilka sekund i gdy jeden lub więcej z następujących zdarzeń wystąpi:

  • Nadejściu nowej wiadomości w kolejce.

  • SQL Server wykonuje przyjęcie instrukcja dla kolejki.

  • Transakcja, która zawiera instrukcję przyjęcie toczy się ponownie.

  • Wszystkie przechowywane procedury uruchomione przez wyjście monitora kolejki.

  • SQL Server wykonuje instrukcja ALTER dla kolejki.

Aktywacja jest konieczne, jeśli spełniony jest jeden z następujących czynności:

  • Nadejściu nowej wiadomości w kolejce, zawierający nie nieprzeczytanych wiadomości, a nie procedury przechowywane aktywacja uruchomiony dla kolejki.

  • Kolejki zawiera nieprzeczytanych wiadomości, nie ma żadnych oczekujących sesja w instrukcja GET GROUP KONWERSACJI lub instrukcja przyjęcie bez klauzula WHERE, a nie instrukcja GET GROUP KONWERSACJI lub przyjęcie instrukcja bez klauzula WHERE zwrócił zestaw wyników puste przez kilka sekund.Innymi słowy gdy wiadomości są grupowania w kolejce ponieważ aktywowanego procedury nie można odczytać je wystarczająco szybkie.

W efekcie tej procedury pozwala monitor kolejki, aby stwierdzić, czy liczby czytelników kolejki przetwarzanie kolejki jest przechowywanie z ruch przychodzący komunikat.Należy zauważyć, że ta metoda pobiera blokowania uwagę grupa konwersacji.Ponieważ tylko jeden czytnik kolejki w danej chwili może przetwarzać wiadomości w konwersacji, uruchamianie czytniki kolejki w odpowiedzi na prostsze podejścia, takie jak liczba nieprzeczytanych wiadomości w kolejce, może być odpadów zasobów.Zamiast tego Service Broker Aktywacja bierze pod uwagę, czy czytnik nowej kolejki będzie miał przydatne pracy do wykonania.

Na przykład kolejki mogą zawierać dużą liczbę nieprzetworzonych wiadomości w jednej konwersacji.W takim przypadek czytnika tylko jedna kolejka może przetwarzać wiadomości.Monitorowanie kolejki uaktywnia inny obiekt odczytujący kolejki.Drugi czytnika kolejki czeka w instrukcja przyjęcie, ponieważ wszystkie wiadomości należą do jednej konwersacji.Tak długo, jak wszystkie wiadomości w kolejce należą do jednej konwersacji, a drugi czytnika kolejki pozostaje uruchomiony, monitorowania kolejki nie można uruchomić inny obiekt odczytujący kolejki.

Określanie, czy występuje aktywacja

Tylko raz Service Broker Określa, że Aktywacja jest konieczna, Service Broker należy określić, czy występuje aktywacji.

Wewnętrzny aktywacja uaktywnia nowego monitora kolejki wystąpienie o aktywacja procedura przechowywana, gdy jest niższa niż wartość podana dla kolejki MAX_QUEUE_READERS liczby uruchomionych programów.Jeśli liczby uruchomionych programów jest równa lub większa niż wartość MAX_QUEUE_READERS, monitorowania kolejki nie można uruchomić nową instancję procedura przechowywana.W widoku zarządzania sys.dm_broker_activated_tasks (języka Transact-SQL) Zawiera informacje dotyczące procedur przechowywanych, które są uruchamiane przez Service Broker.

W przypadku zewnętrznych aplikacji Service Broker nie ma żadnych informacji w numerze czytników różne kolejki, które może działać z kolejką. Ponadto może być kilka uruchamiania czas między czasu, w którym zdarzenie aktywacja i czasem, że czytnika rozpoczyna czytanie kolejki.Dlatego też Service Broker zawiera limit czas dla zewnętrznych aplikacji na odpowiedź. Podczas limitu czas, Service Broker nie będą dawać inne powiadomienie. Gdy aplikacja wywołuje przyjęcie w kolejce lub limit czas wygaśnięcia, Service Broker Tworzy inny powiadomienie o zdarzeniu, jeśli Aktywacja jest wymagana. Aplikacją zewnętrzną monitoruje powiadomień o zdarzeniach w czasie pracy programu do określenia, czy więcej czytniki kolejki są wymagane do odczytywania zdarzenie.