Priorytety konwersacji

Zestaw reguł zdefiniowanych przez użytkownika, z których każdy określa poziom priorytetu i kryteria dotyczące ustalania, które są priorytety konwersacji Service Broker konwersacji, aby przypisać poziom priorytetu.Wiadomości z konwersacji, których wysokim priorytetem są zazwyczaj wysyłane lub odbierane przed konwersacjach mających poziomy niski priorytet wiadomości.

Używa priorytetów konwersacji

Priorytety konwersacji można wykonać następujące czynności:

  • Identyfikacja rozmowy, które mają pierwszeństwo przed innymi.

  • Obsługuje różne poziomy usługa, której od klientów, którzy płacą większe wysyłane są wiadomości przed wiadomości od klientów, którzy niższych stawek płac.

  • Preferować pełni żądań klientów przez zadania w tle.Na przykład nowe rejestracje nabywca powinien mieć wyższy priorytet niż wysyłanie podsumowania transakcji biznesowych do magazyn danych.

Priorytety konwersacji i punkty końcowe konwersacji

Priorytety konwersacji są tworzone w każdej bazie danych za pomocą instrukcja tworzenia priorytet BROKER.Każdego priorytetu konwersacji definiuje następujące pojęcia:

  • Nazwa priorytetu konwersacji.

  • Aby przypisać poziom priorytetu Service Broker konwersacji.Poziomy są określone jako liczby całkowite od 1 (najniższy) do 10 (najwyższy).Wartość domyślna to 5.

  • Kryteria określające, które konwersacji poziom priorytetu odnosi się do następujących:

    • Nazwa kontrakt lub DOWOLNE.

    • Nazwa lokalna usługa lub DOWOLNE.

    • Nazwa usługa zdalnego ani żadnych.

Service Broker przypisuje poziomy priorytetu w konwersacji punkty końcowe punkty końcowe są tworzone.Każda z nich ma dwa punkty końcowe konwersacji:

  • Inicjator punkt końcowy konwersacji kojarzy po jednej stronie konwersacji z usługa inicjatora i kolejki inicjatora.Inicjator punkt końcowy konwersacji jest tworzony podczas wykonywania instrukcja rozpocząć okna DIALOGOWEGO.Operacje związane z inicjatora punkt końcowy konwersacji obejmują:

    • Wysyła z usługa inicjatora.

    • Odbiera z kolejki inicjatora.

    • Pobieranie następnej grupa konwersacji z kolejki inicjatora.

  • miejsce docelowe punkt końcowy konwersacji kojarzy stronie konwersacji z usługa docelową i kolejki.punkt końcowy konwersacji miejsce docelowe jest tworzony podczas pierwszej wiadomości z inicjatora jest umieszczana w kolejka docelowa.Operacje związane z miejsce docelowe endpoint konwersacji obejmują następujące:

    • Odbiera od kolejka docelowa.

    • Wysyła z miejsce docelowe usługi.

    • Uzyskiwanie następnej grupa konwersacji z kolejka docelowa.

usługa jest oceniane jako serwisu lokalnego lub zdalnego zależy od typu punkt punkt końcowy konwersacji:

  • Dla punkt punkt końcowy konwersacji inicjatora usługi inicjatora jest Usługa lokalna i Usługa miejsce docelowe jest usługa zdalnego.

  • Dla punkt punkt końcowy konwersacji miejsce docelowe usługi miejsce docelowe jest Usługa lokalna i Usługa inicjatora jest usługa zdalnego.

Jak Service Broker przypisuje poziomów priorytetu

Service Broker przypisuje konwersacji poziomy priorytetu, gdy tworzone są punkty końcowe konwersacji.Punkt końcowy konwersacji zachowuje poziom priorytetu, do czasu zakończenia konwersacji.Nowe priorytety lub zmiany istniejących priorytetów nie są stosowane do istniejącej konwersacji.

Service Brokerprzypisuje poziom priorytetu punkt końcowy konwersacji z priorytetem konwersacji, której kryteria kontrakt i usług najlepiej pasują do właściwości punktu końcowego.W poniższej tabela przedstawiono pierwszeństwo dopasowania:

Kontraktu punktu końcowego

Punkt końcowy, Usługa lokalna

Zdalny punkt końcowy

Priorytet umowy

Usługa lokalna priorytet

Priorytet usługi zdalnego

Priorytet umowy

Usługa lokalna priorytet

WSZELKIE

Priorytet umowy

WSZELKIE

Priorytet usługi zdalnego

Priorytet umowy

WSZELKIE

WSZELKIE

WSZELKIE

Usługa lokalna priorytet

Priorytet usługi zdalnego

WSZELKIE

Usługa lokalna priorytet

WSZELKIE

WSZELKIE

WSZELKIE

Priorytet usługi zdalnego

WSZELKIE

WSZELKIE

WSZELKIE

Service Broker szuka najpierw priorytet, którego kontrakt określona, Usługa lokalna i usługa zdalnego odpowiada wykorzystywanymi przez punkt końcowy konwersacji.Jeśli nie znaleziono, Service Broker następnie szuka priorytet z kontrakt i Usługa lokalna, który odpowiada wykorzystywanymi przez punkt końcowy, i których usługa zdalnego określono jako ANY.Ten proces jest kontynuowany dla wszystkich zmian wymienionych w tabela priorytet.Jeśli nie zostanie znaleziony, punkt końcowy jest przypisany domyślny priorytet 5.

The Service Broker communication protocols do not transmit priority levels between conversation endpoints.Service Broker independently assigns a priority level to each endpoint.Aby Service Broker przypisać poziomy priorytetu zarówno inicjatora i punkty końcowe konwersacji miejsce docelowe, musi zapewnić, że oba punkty końcowe są objęte priorytetów konwersacji.Jeśli inicjator i miejsce docelowe konwersacji punkty końcowe są w odrębnych bazach danych, należy utworzyć priorytetów konwersacji w każdej bazie danych.Jeśli inicjator i miejsce docelowe punkty końcowe są w tej samej bazy danych:

  • Mogą obejmować oba punkty końcowe konwersacji przy użyciu jednego priorytetu konwersacji, który określa nazwę kontrakt, która jest używana przez konwersacji i wszystkie lokalne i zdalne usługa nazwy.

  • Każdy punkt końcowy konwersacji osobno przy użyciu dwóch priorytetów konwersacji mogą obejmować:

    • Jednej konwersacji dla punktu końcowego inicjatora, która określa nazwę usługa inicjatora LOCAL_SERVICE_NAME i miejsce docelowe nazwa usługa dla REMOTE_SERVICE_NAME.

    • Jednej konwersacji dla danego punktu końcowego miejsce docelowe Określa nazwę usługa miejsce docelowe dla LOCAL_SERVICE_NAME i REMOTE_SERVICE_NAME nazwa usługa inicjatora.

Zazwyczaj określono ten sam poziom priorytetu oba punkty końcowe konwersacji do konwersacji.Podczas różnych poziomów priorytetu dla każdego punktu końcowego można określić, w ten sposób nie oznacza wiadomości są przesyłane szybciej w jednym kierunku niż drugi.Wiadomości są wysyłane z jednego punkt końcowy konwersacji i odbierane w punkcie końcowym.Dlatego każdej transmisji komunikatu dotyczy poziomy priorytetu, przypisane oba punkty końcowe.Na przykład można skonfigurować konwersacji, tak aby punkt końcowy inicjatora rozmowy ma priorytet poziom 10 i miejsce docelowe punkt końcowy ma priorytet poziom 1.W takim przypadek:

  • Wiadomości przesyłane z usługa inicjatora przy użyciu priorytet 10 są odbierane z kolejka docelowa za pomocą priorytet 1.

  • Wiadomości przesyłane z usługa miejsce docelowe przy użyciu priorytetu poziom 1 są odbierane z kolejki inicjatora przy użyciu priorytetu poziom 10.

grupa konwersacji jest przypisany ten sam priorytet najwyższy priorytet przypisany poziom wszystkie konwersacje w przypadku gdy spełnione są następujące:

  • Konwersacja jest element członkowski grupy.

  • Konwersacja ma obecnie wiadomości w kolejce usługa.

Wszystkich konwersacji punkty końcowe w bazie danych są przypisywane domyślne priorytety 5, jeśli priorytetów konwersacji nie zostały utworzone w bazie danych.

Priorytety konwersacji nie wpływa na przesyłanie dalej wiadomości, który zawsze działa poziom priorytetu domyślnych 5.

Przykład priorytet konwersacji

Należy rozważyć system z następujących czynności:

  • InitiatorDB zawierających InitiatorService i InitiatorQueue.

  • A TargetDB zawierających TargetService i TargetQueue.

  • kontrakt o nazwie SimpleContract, która określa, że RequestMessages z InitiatorService do TargetService.On również określa, że ReplyMessages z TargetService do InitiatorService.

Ten skrypt określa poziom priorytetu dla punkt punkt końcowy konwersacji inicjatora i jego skojarzony operacje:

  • Wyślij z RequestMessage z InitiatorService do TargetQueue.

  • ODBIERZ z ReplyMessage z InitiatorQueue.

USE InitiatorDB;
GO
CREATE BROKER PRIORITY InitiatorToTargetPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = InitiatorSerivce,
         REMOTE_SERVICE_NAME = N'TargetService',
         PRIORITY_LEVEL = 3);
GO

Ten skrypt określa poziom priorytetu dla miejsce docelowe konwersacji punktu końcowego i jego skojarzony operacje:

  • ODBIERZ z RequestMessage z TargetQueue.

  • Wyślij z ReplyMessage z TargetService do InitiatorQueue.

USE TargetDB;
GO
CREATE BROKER PRIORITY TargetToInitiatorPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = TargetService,
         REMOTE_SERVICE_NAME = N'InitiatorService',
         PRIORITY_LEVEL = 3);
GO

Jak działają priorytetów

Zazwyczaj Service Broker wysyła i odbiera wiadomości dla konwersacji o wysokim priorytecie przed wysyłaniem i odbieraniem wiadomości dla konwersacji o niskim priorytecie. Wiadomości z wysokim priorytetem konwersacji spędzają mniej czas w kolejkach niż wiadomości z niskim priorytetem konwersacje.

Poziomy priorytetu odbioru

Poziomy priorytetu są zawsze stosowane do operacji, które odbierają wiadomości lub grupa konwersacji identyfikatory z kolejki.

Priorytet poziom jest jednym z czynników określania zestaw wiadomości pobierane przez przyjęcie i kolejność, w jakiej wiadomości są pobierane:

  • Każda instrukcja ODBIERZ zawsze pobiera wiadomości z jednej grupa konwersacji:

    • ODBIERZ, która ma miejsce nie klauzula pobiera wiadomości należące do grupa konwersacji odblokowane najwyższy priorytet o wiadomości w kolejce.

    • ODBIERZ zawierającej klauzulę WHERE pobiera wiadomości dla grupa konwersacji, określony w klauzula WHERE.

  • W ramach grupa konwersacji ODBIERANIA pobiera komunikaty w zależności od poziom priorytetu konwersacje w grupie.Wszystkie wiadomości z konwersacji z najwyższym poziomie priorytetu są pobrane najpierw, a następnie wiadomości w konwersacji z następnego najwyższego poziom priorytetu itd.

  • W konwersacji wiadomości są pobierane w tej samej kolejności, jak zostały wysłane.

Pobierz KONWERSACJĘ grupy zwraca grupy o najwyższym priorytecie poziom z zestaw odblokowane grup, które mają wiadomości w kolejce.

Poziomy priorytetu transmisji

Wiadomości w kolejkach transmisji dla wystąpienie są przekazywane na podstawie sekwencji:

  • Poziom priorytetu ich skojarzone punkt końcowy konwersacji.

  • W ramach priorytetu poziom, ich wysyłać sekwencji w konwersacji.

Service Broker współrzędne poziomy priorytetu wszystkich kolejek transmisji w wystąpienie aparatu bazy danych.Service Broker najpierw przesyła wiadomości z konwersacji priorytet 10 we wszystkich kolejkach transmisji, a następnie wiadomości od priorytetu 9 konwersacji i tak dalej.

Względna różnica w wydajności wiadomości zwiększa się różnica poziomów priorytetu.W systemie przy użyciu dwóch sąsiednich priorytet pozioms, takie jak 9 i 10 wiadomości o wyższym priorytecie poziom ma zaletę małej wydajności.W systemie za pomocą dwóch szeroko oddzielone priorytet pozioms, takie jak 1 i 10, wiadomości o wyższym priorytecie poziom mają większe korzyści wydajności.W systemach korzystających z wielu poziomów priorytetu większość przetwarzania jest przydzielany do najwyższego poziomy priorytetu 2 lub 3.

Poziomy priorytetu, określone w konwersacji priorytety są stosowane tylko do wiadomości w kolejce transmisji Jeśli opcja HONOR_BROKER_PRIORITY bazy danych jest zestaw on.Jeśli jest HONOR_BROKER_PRIORITY zestaw na wyłączone, wszystkie wiadomości umieszczone w kolejce transmisji dla tej bazy danych są wysyłane przy użyciu domyślny priorytet 5.Podczas wyświetlania za pomocą sys.transmission_queue, komunikat nadal jest wyświetlany priorytet otrzymał od punktu końcowego, ale domyślny poziom priorytetu jest używany do przesyłania wiadomości.

Ponieważ poziomy priorytetu są stosowane do wiadomości w kolejce transmisji, zwykle nie wpływają one wiadomości wysyłane między służbami w tym samym wystąpienie aparatu bazy danych.Wiadomości wysyłane do usługa w tym samym wystąpienie są umieszczane bezpośrednio do kolejki usługa bez pośrednictwa kolejki transmisji.Niektóre warunki mogą spowodować lokalne wiadomości umieszczone w kolejce transmisji, takich jak niektóre rodzaje błędów lub obiekt docelowy kolejki jest nieaktywny.Jeśli wiadomość jest przechowywana w kolejce przekazywania odpowiednich priorytetów poziom jest stosowany.

Mogą być wysyłane wiadomości i wiadomości fragmenty z priorytetu:

  • Service Broker wysyła wiadomości między wystąpieniami aparat bazy danych przy użyciu bloków fragmenty wiadomości.Jeśli istnieje kilka fragmentów wiadomości o różnych priorytetach gotowy do wysłania do jednego wystąpienie, Service Broker może wysłać wszystkie fragmenty w jednym blok.Niektóre fragmenty na końcu blok może mieć niższy priorytet poziom niż fragmenty wiadomości oczekujące na transmisję do innego wystąpienie.

  • Service Broker obejmuje wyzwolony mechanizm zapobiegania zachować dużą liczbą wiadomości o wysokim priorytecie blokowanie wiadomości o niskim priorytecie.Mogą być wysyłane wiadomości o niskim priorytecie długi czas oczekiwania, nawet jeśli ma wyższy priorytet wiadomości w kolejce.

Podczas poszczególnych wiadomości lub fragmentów wiadomości mogą być wysyłane z priorytetów, skutki powinny być małe, gdy w wielu wysyła wiadomość.