Priorytety konwersacji

Zestaw reguł zdefiniowanych przez użytkownika, z których każdy określa priorytet i kryteria określające, które są priorytety konwersacji Service Broker konwersacji, aby przypisać poziom priorytetu. Wiadomości z konwersacji poziomu o wysokim priorytecie są zazwyczaj wysyłane lub odbierane przed wiadomości od konwersacji poziomu niski priorytet.

Użycie właściwości konwersacji

Priorytety konwersacji można używać do wykonywania następujących czynności:

  • Identyfikator konwersacji, które mają pierwszeństwo przed innymi.

  • Obsługuje różne poziomy z usługa, gdzie wysłanych wiadomości od klientów, którzy płacą większe od klientów, którzy płacą mniejszej szybkości przed wiadomości.

  • Preferować żądań klientów przez zadania w tle.Na przykład rejestracje nowych odbiorców 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 bazy danych za pomocą instrukcja CREATE BROKERA priorytet.Priorytet każdej konwersacji definiuje następujące czynności:

  • Nazwa dla priorytetu konwersacji.

  • Poziom priorytetu, przypisywanie Service Broker konwersacji. Poziomy są określane jako liczby całkowite z 1 (najniższy) do 10 (najwyższy).Wartość domyślna to 5.

  • Kryteria, które określają, które konwersacji poziom priorytetu stosuje się do następującego:

    • Nazwa kontrakt lub ANY.

    • Nazwa usługa lokalnej lub ANY.

    • Nazwa zdalna usługa lub ANY.

Service Broker przypisuje poziomów priorytetu w konwersacji punkty końcowe są tworzone punkty końcowe.Każdej konwersacji ma dwa punkty końcowe konwersacji:

  • Punkt końcowy konwersacji inicjatora kojarzy po jednej stronie konwersacji z usługa inicjatora i kolejka inicjatora.Punkt końcowy konwersacji inicjatora jest tworzony podczas uruchamiania jest instrukcja BEGIN DIALOG.Operacje związane z danym punkt końcowy konwersacji inicjatora, należą:

    • 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 drugiej stronie komunikacji z usługa docelowego i kolejki.Punkt końcowy konwersacji miejsce docelowe jest tworzony podczas pierwszej wiadomości z inicjatora jest umieszczany w kolejka docelowa.Operacje związane z miejsce docelowe punkt końcowy konwersacji obejmują następujące:

    • Odbiera od kolejka docelowa.

    • Wysyła z miejsce docelowe usługa.

    • Uzyskiwanie następnej grupa konwersacji z kolejka docelowa.

usługa, które jest obliczane zgodnie z lokalnymi lub zdalnymi usługa zależy od typu punkt końcowy konwersacji:

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

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

W jaki sposób usługa Broker przypisuje poziomy priorytetu

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

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

Kontrakt punktu końcowego

Punkt końcowy, Usługa lokalna

Zdalny punkt końcowy usługa

Priorytet kontrakt

Priorytet, Usługa lokalna

Priorytet usługa zdalny

Priorytet kontrakt

Priorytet, Usługa lokalna

WSZYSTKIE

Priorytet kontrakt

WSZYSTKIE

Priorytet usługa zdalny

Priorytet kontrakt

WSZYSTKIE

WSZYSTKIE

WSZYSTKIE

Priorytet, Usługa lokalna

Priorytet usługa zdalny

WSZYSTKIE

Priorytet, Usługa lokalna

WSZYSTKIE

WSZYSTKIE

WSZYSTKIE

Priorytet usługa zdalny

WSZYSTKIE

WSZYSTKIE

WSZYSTKIE

Service Broker w pierwszej kolejności wyszukuje priorytetem, których określonej kontrakt, usługa lokalnej i zdalnej usługa pasuje do tych, które są używane przez punkt końcowy konwersacji.Jeśli zostanie ono znalezione, Service Broker następnie wyszukuje priorytet z kontrakt i lokalnej usługi używane przez punkt końcowy, które odpowiadają i gdy usługa zdalnego został określony jako ANY. Ten proces jest kontynuowany dla wszystkich zmian wymienionych w tabela priorytet.Jeśli nie znaleziono, 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 program Service Broker przypisywanie poziomów priorytetu zarówno inicjatora i punkty końcowe konwersacji miejsce docelowe, należy upewnić się że oba punkty końcowe są objęte priorytetów konwersacji. W przypadku inicjatora i miejsce docelowe punktach końcowych konwersacji w odrębnych bazach danych, należy utworzyć priorytetów konwersacji w każdej bazy danych.Jeżeli inicjujący i miejsce docelowe punkty końcowe są w tej samej bazy danych:

  • 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 ANY nazw lokalnych i zdalnych usług mogą obejmować.

  • 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óry określa nazwę usługa inicjatora LOCAL_SERVICE_NAME i miejsce docelowe nazwa usługa dla REMOTE_SERVICE_NAME.

    • Jednej konwersacji dla docelowego punktu końcowego, określający nazwę usługa docelowego dla LOCAL_SERVICE_NAME i nazwę usługa inicjatora REMOTE_SERVICE_NAME.

Ten sam priorytet poziom jest zwykle określony dla obu punktów końcowych konwersacji do konwersacji.Chociaż można określić różnych poziomów priorytetu dla każdego punktu końcowego, w ten sposób nie oznacza wiadomości są przesyłane szybciej w jednym kierunku niż drugi.Wiadomości są wysyłane przez punkt końcowy jednej konwersacji i odbierane w drugim punkcie końcowym.Dlatego każdy przesyłanie wiadomości jest zagrożony poziomy priorytetu, przypisane oba punkty końcowe.Na przykład, użytkownik może konwersacji tak skonfigurować, aby punkt końcowy konwersacji inicjatora ma priorytet poziom 10 i miejsce docelowe punkt końcowy ma priorytet poziom 1.W tym przypadek:

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

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

grupa konwersacji jest przypisany ten sam poziom priorytetu oznacza najwyższy priorytet, poziom przypisany do każdej konwersacji w przypadku gdy spełnione są następujące:

  • Konwersacja jest członkiem grupy.

  • Konwersacji ma obecnie wiadomości w kolejce Usługa.

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

Priorytety konwersacji nie mają wpływu na przesyłanie dalej wiadomości, która zawsze działa z szybkością domyślny poziom priorytetu 5.

Przykład priorytet konwersacji

Należy wziąć pod uwagę system z następujących czynności:

  • An InitiatorDB containing an InitiatorService and InitiatorQueue.

  • A TargetDB zawierająceTargetService and TargetQueue.

  • kontrakt o nazwie SimpleContract, która określa, że RequestMessages wysyłane z InitiatorService to the TargetService.On również określa, że ReplyMessages wysyłane z TargetService to the InitiatorService.

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

  • WYSYŁANIA z RequestMessage from the InitiatorService to the TargetQueue.

  • PRZYJĘCIE z ReplyMessage from the 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 danego punkt końcowy konwersacji docelowego i jego skojarzony operacji:

  • PRZYJĘCIE z RequestMessage from the TargetQueue.

  • WYSYŁANIA z ReplyMessage from the TargetService to the 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

W jaki sposób eksploatację priorytetów

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

Poziomy priorytetu odbioru

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

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

  • Każda instrukcja przyjęcie zawsze pobiera wiadomości z jednej grupa konwersacji:

    • PRZYJĘCIE z klauzula WHERE nie pobiera wiadomości, które należą do grupa konwersacji odblokowane najwyższy priorytet, zawierający wiadomości w kolejce.

    • PRZYJĘCIE, zawierającej klauzulę pobiera wiadomości dla grupa konwersacji, określonych w klauzula WHERE.

  • W ramach grupa konwersacji przyjęcie pobiera komunikaty w zależności od poziom priorytetu komunikacje w grupie.Wszystkie wiadomości od konwersacji o najwyższym poziomie priorytetu są najpierw pobrane, 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, w jakiej zostały wysłane.

Grupy o najwyższym priorytecie zwraca GET GROUP KONWERSACJI poziom z zestaw odblokowane grup, do których wiadomości w kolejce.

Poziomy priorytetu transmisji

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

  • Poziom priorytetu ich skojarzone punkt końcowy konwersacji.

  • W ramach poziom priorytetu, ich kolejność wysyłania w konwersacji.

usługa Broker współrzędne poziomów priorytetu we wszystkich kolejkach transmisji w wystąpienie aparat bazy danych.usługa Broker na najpierw przesyła wiadomości od konwersacji priorytet 10 we wszystkich kolejkach transmisji, a następnie wiadomości od konwersacji priorytet 9 i tak dalej.

Względne różnice w wydajności wiadomości zwiększa się różnicę w poziomy priorytetu.W systemie przy użyciu dwóch przylegających priorytet poziom s, na przykład 9 i 10, wiadomości o wyższym priorytecie poziom będzie miał korzyści mała wydajność.W systemie za pomocą dwóch szeroko oddzielone priorytet poziom s, takie jak 1 i 10, wiadomości o wyższym priorytecie poziom mają większe zaletę wydajności.W systemach korzystających z wielu poziomów priorytetu większość przetwarzania jest przydzielany do najwyższego poziomu 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 HONOR_BROKER_PRIORITY jest ustawiona na wyłączona, wszystkie wiadomości, umieszczane w kolejce transmisji dla tej bazy danych są wysyłane przy użyciu domyślnego poziom priorytetu 5.Podczas przeglądania za pomocą sys.transmission_queue, wiadomość nadal zawiera poziom priorytetu, otrzyma od punktu końcowego, ale priorytet domyślny jest używany do przesyłania wiadomości.

Ponieważ poziomy priorytetu są stosowane do wiadomości w kolejce transmisji, zwykle nie mają one wpływu na wiadomości wysyłane między usług w tej samej wystąpienie aparat bazy danych.Wiadomości, które są przesył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, może spowodować, że lokalne wiadomości mają być umieszczone w kolejce transmisji, takie jak niektóre rodzaje błędów lub kolejka docelowa jest nieaktywny.Jeśli wiadomość jest przechowywana w kolejce transmisji, zastosowano odpowiedni priorytet.

Wiadomości i fragmentów wiadomości mogą być przesyłane z priorytetów:

  • Service Broker wysyła wiadomości pomiędzy wystąpieniami aparat bazy danych przy użyciu bloków komunikatów fragmentów.Jeśli istnieje kilka fragmentów wiadomości o różnych priorytetach gotowe do wysłania do jednego wystąpienie, usługa Broker może wysłać wszystkie fragmenty jeden blok.Niektóre fragmenty na końcu blok może być niższy poziom priorytetu niż fragmenty wiadomości trwa oczekiwanie na przekazywanie do innego wystąpienie.

  • Service Broker zawiera mechanizm zapobiegania zablokowania pomaga zapobiec blokowaniu wiadomości o niskim priorytecie dużą liczbę wiadomości o wysokim priorytecie.Mogą być wysyłane wiadomości o niskim priorytecie oczekiwania przez dłuższy czas, nawet jeśli nie ma wyższy priorytet wiadomości w kolejce.

Podczas poszczególnych wiadomości lub fragmentów wiadomości mogą być przesyłane z priorytetów, efekty powinna być niewielka, gdy między wiele wysyła wiadomość.