Udostępnij za pośrednictwem


Opis po wystąpieniu aktywacji

Service Broker Proces aktywacja składa się z dwóch kroków.Pierwszy, Service Broker Określa, czy Aktywacja jest konieczne.Drugi, Service Broker Określa, czy występuje aktywacja.Chociaż dokładny proces różni się dla aktywacja wewnętrznych i zewnętrznych aktywacja, ogólną pojęciami są takie same, albo strategii.

Określanie, czy konieczna jest aktywacja

Konieczne jest aktywacji, ilekroć nowe czytnik kolejki miałoby 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.Widok dynamiczne zarządzanie sys.dm_broker_queue_monitors (języka Transact-SQL) Wyświetla listę aktywnych monitorów kolejki w wystąpienie.Każdy monitor kolejki śledzi następujące czynności:

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

Jak instrukcja ODBIERZ kolejka powrócił zestaw wyników puste

Ile procedury aktywacja przechowywane są obecnie uruchomione dla kolejki.

Monitor kolejki, sprawdza czy aktywacja jest konieczne, co kilka sekund i gdy jedno lub więcej z następujących zdarzeń wystąpi:

  • Nadejściu nowej wiadomości w kolejce.

  • SQL Server wykonuje odbioru instrukcja dla kolejki.

  • Transakcja, która zawiera odbioru instrukcja wycofuje.

  • 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 i istnieją procedury przechowywane aktywacja, nie uruchomiony dla kolejki.

  • Nieprzeczytane wiadomości zawiera kolejki, jest nie oczekiwania na sesja w instrukcja GET grupy KONWERSACJI lub instrukcja ODBIERZ bez klauzula WHERE i nie instrukcja GET grupy KONWERSACJI lub ODBIERZ instrukcja bez klauzula WHERE zwrócił zestaw wyników puste na kilka sekund.Innymi słowy gdy wiadomości są grupowania kolejka ponieważ aktywowanego procedury nie są wystarczająco szybkie ich odczytać.

W efekcie ta procedura pozwala stwierdzić, czy liczby czytelników kolejki przetwarzanie kolejki jest prowadzeniem monitor kolejki wiadomość przychodząca ruchu.Należy zauważyć, że podejście to Trwa blokowanie uwagę grupa konwersacji.Ponieważ tylko jedna kolejka czytnik w czas może procesu wiadomości w konwersacji, czytniki kolejki w odpowiedzi na prostsze, takie jak liczba nieprzeczytanych wiadomości w kolejce, rozpoczynając może niepotrzebnie angażować zasoby.Zamiast tego Service Broker aktywacja uważa się, czy czytnik nowej kolejki mają przydatne pracy do wykonania.

Na przykład kolejki mogą zawierać dużą liczbę nieprzetworzonych wiadomości w jednej konwersacji.W takim przypadek tylko jedna kolejka Czytelnik może przetwarzać wiadomości.Monitor kolejki uaktywnia czytnik innej kolejki.Drugi czytnik kolejki czeka w instrukcja odbioru, ponieważ wszystkie wiadomości należą do jednej konwersacji.Tak długo, jak wszystkie wiadomości w kolejce należą do tej samej konwersacji, a drugi czytnik kolejki pozostanie uruchomiony, monitor kolejki nie można uruchomić inny obiekt odczytujący kolejki.

Określanie, czy występuje aktywacji

Po Service Broker Określa, że konieczne jest aktywacja Service Broker należy zdecydować, czy występuje aktywacji.

Wewnętrzny aktywacja monitor kolejki uaktywnia nowe wystąpienie procedura składowana aktywacja po liczby uruchomionych programów jest niższa niż wartość MAX_QUEUE_READERS zestaw dla kolejki.Liczby uruchomionych programów jest równa lub większa niż wartość MAX_QUEUE_READERS, monitor kolejki nie uruchamia nowe wystąpienie procedura składowana.Widok zarządzania sys.dm_broker_activated_tasks (języka Transact-SQL) zawiera informacje dotyczące procedur przechowywanych, uruchomione przez Service Broker.

Dla aplikacji zewnętrznych Service Broker nie ma informacji na liczbie czytniki distinct kolejki, które może działać z kolejki.Ponadto może być uruchamiania niektórych czas między aktywacja zdarzenie jest wywoływane czasu i czasu, że czytnik rozpoczyna czytanie kolejki.Dlatego Service Broker zawiera czas-out dla aplikacji zewnętrznej, aby odpowiedzieć.Podczas czas-out, Service Broker , nie spowoduje utworzenia innego powiadomienie.Gdy aplikacja wywołuje odbioru w kolejce lub czas-skończy się limit, Service Broker Tworzy inny powiadomienie o zdarzeniu, jeśli Aktywacja jest wymagana.Aplikacji zewnętrznej monitoruje powiadomienia o zdarzeniach, podczas gdy program jest uruchomiony, aby ustalić, czy więcej czytniki kolejki są wymagane do odczytu zdarzenie.