Service Broker routingu

W tym temacie opisano szczegóły dotyczące Service Broker trasy wiadomości.Aby uzyskać omówienie Zobacz Trasy.

Dla większości aplikacji prosty podejścia do Service Broker routingu działa dobrze.W każdej bazie danych, która zawiera usługi określ trasa dla zewnętrznych usługa komunikuje się z usługi.Jednakże Service Broker zapewnia wyrafinowane routingu system obsługi przypadki, w których aplikacja wymaga zachowania bardziej złożone.Aby przetwarzać przykłady ilustrujące marszruty, zobacz Service BrokerPrzykłady routingu.

Opis procesu routingu

SQL Server obsługuje dwa różne poziomy informacji o routingu.Każda baza danych zawiera lokalnej tabela routingu, sys.routes, dla konwersacji rozpoczęte w tej bazie danych.Dla konwersacji, które pochodzą z wystąpienie SQL Server, SQL Server przeszukuje tabela routingu w bazie danych, które utworzone konwersacji.Dla konwersacji przychodzące z zewnątrz wystąpienie, SQL Server wyszukiwania msdb.sys.routes.

Podstawowy proces dopasowania jest identyczne, czy pochodzi konwersacji w instancji lub poza wystąpienie.Proces ignoruje tras, które wygasły.Proces routingu zawiera trzy odrębne czynności:

  1. Finding matching routes.Service Broker finds a set of possible routes by matching the service name and the Service Broker identifier.

  2. Choosing a route.Service Broker chooses a route from among the set of possible routes.

  3. Lokalizowanie usługa obiekt docelowy.Gdy określa trasa wybranego "LOKALNĄ" jako adres sieciowy Service Broker lokalizuje usługa w wystąpienie.Jeśli usługa nie istnieje w wystąpienie, Service Broker może powrócić do kroku 2 i wybrać inną trasa.

When a message has been sent from the initiator to the target and the initiator receives an acknowledgement message from the target, the initiator uses the Service Broker identifier in the acknowledgement messages to route subsequent messages to the same target.Service Broker handles acknowledgement messages; the process is transparent to an application that uses Service Broker.Aby uzyskać więcej informacji na temat wiadomości potwierdzenia, zobacz Protokołów komunikacyjnych Service Broker.

Wiadomości odpowiedzi od usługi docelowej

Gdy wiadomości przychodzącej z poza wystąpienie jest z miejsce docelowe usługi, SQL Server sprawdza, czy bieżące wystąpienie zawiera Service Broker identyfikator w wiadomości.Jeśli tak, następnie wiadomość zostanie dostarczona w bieżącym wystąpienie zgodnie z opisem w "Lokalizacji docelowej usługi". W przeciwnym razie SQL Server się standardowy proces dopasowania.

Znajdowanie pasujących tras

Poniższa procedura opisuje, jak SQL Server dopasowuje trasy.Na każdym etapie, jeśli jeden lub więcej tras, pasujące proces kończy, a Service Broker wybiera jedną pasujących tras następująco:

  1. Jeśli konwersacji określa Service Broker identyfikator Znajdź trasa dokładne dopasowanie nazwy usługa i Service Broker identyfikator.

  2. Znaleźć dokładny odpowiednik nazwy usługa między tras, które nie określają Service Broker identyfikator.

  3. Jeśli nie określono konwersacji Service Broker identyfikator, znaleźć dokładny odpowiednik nazwy usługa między tras, które określają Service Broker identyfikator.Jeśli tabela routingu zawiera trasy, które odpowiadają nazwę usługa i różnych Service Broker arbitralnie pobranie identyfikatorów, Service Broker identyfikator.Następnie zgodne trasy, które używają, które Service Broker identyfikator.

  4. Jeśli trasa do routing dynamiczny usługa jest obecny i oczekuje żądanie nie dla trasy do usługa, Oznacz konwersację opóźnione i żądania informacji o routingu z tej usługa.

  5. Znajdź trasa, która określa żadna nazwa usługa ani Service Broker identyfikator.

  6. Jeśli konwersacji określa Service Broker identyfikator i jeśli wystąpienie zawiera jeden lub więcej baz danych, które zawierają usług za pomocą nazw, które odpowiadają nazwie, która została określona w konwersacji, route konwersacji jakby tabela routingu zawarte trasa o nazwę usługa i adres sieciowy "LOKALNĄ".

  7. Oznacz konwersację, opóźnione.

Podczas konwersacji jest oznaczona opóźnione, Service Broker wykonuje proces dopasowania ponownie po czas-poza okres.Należy zauważyć, że błąd znaleźć pasująca trasa nie jest uznawany za błąd.

Wybieranie trasy

Jeśli dopasowywania procesów znajduje się kilka pasujących tras, Service Broker wybiera jednej trasa spośród pasujących tras.For this purpose, routes that have the same Service Broker identifier, service name, and network address are considered to be identical.Service Broker uses the following procedure to choose the exact route.Na każdym kroku proces jest kontynuowany w następnym kroku, jeśli nie ma tras spełniających specyfikację adresu dla etapu.

  1. Wybierz jedną trasa spośród trasas określony adres dublowania.

  2. Wybieranie jednej trasa spośród tras, które określają "LOKALNĄ" jako adres sieciowy.Jeśli to wystąpienie SQL Server nie zawiera usługa, który odpowiada nazwie, który został określony w konwersacji, kontynuuj od kroku 3.

  3. Wybieranie jednej trasa spośród tras, które należy określić adres sieciowy.

  4. Wybieranie jednej trasa spośród tras, które określają "TRANSPORT" jako adres sieciowy.

Jeśli broker przesyłanie dalej nie jest aktywne, Service Broker spadnie wiadomości w konwersacji nie pochodzi bieżące wystąpienie i adres wybranego trasa nie jest "LOKALNĄ".

Lokalizowanie usługi docelowego

Jak opisano wcześniej, Service Broker dostarcza wiadomości do usługa w bieżącym wystąpienie podczas dopasowywania trasa określa "LOKALNĄ" jako adres sieciowy.Wiadomości z zewnątrz wystąpienie trasa musi być w msdb.sys.routes.Wiadomości, które pochodzą z wystąpienie, musi być pasująca trasa sys.routes tabela bazy danych, który inicjuje komunikację.

Gdy Service Broker Określa, że usługa wiadomości w bieżącym wystąpienie, Service Broker musisz zlokalizować usługi w wystąpienie.Gdy Service Broker istnieje identyfikator konwersacji w konwersacji lub trasa, Service Broker dostarcza wiadomości do bazy danych, identyfikowane przez Service Broker identyfikator.

W przeciwnym razie Service Broker lokalizuje usługa przez wyszukiwanie nazwy usługa bazy danych zawierającej konwersacji.Then, it searches for the service name in the other databases in the instance.Service Broker delivers the message to the first service located.Jednakże należy zauważyć, że kolejność Service Broker Wyszukiwanie innych baz danych wystąpienie jest nieokreślony i nie gwarantuje zgodne z konwersacji do konwersacji.Oznacza to, że jeśli więcej niż jedną kopię miejsce docelowe usługa w wystąpienie, Service Broker losowo wybiera usługa miejsce docelowe.

Inne uwagi

For improved reliability, Service Broker routing contains safeguards against routing loops.Service Broker routing is aware of database mirroring, and can transparently redirect conversations to the active partner of a mirrored database.

Pętle routingu

Service Broker przekazywanie wiadomości śledzi liczbę razy wiadomość została przesłana ochronę w nieskończonej pętli routingu.Aby uzyskać więcej informacji, zobacz Service BrokerPrzekazywanie wiadomości.

If the matching route contains a network address that resolves to the current instance, SQL Server treats the conversation as if the conversation originated outside the instance.Service Broker routes messages for the conversation using the routes in msdb.sys.routes.Routing wiadomości jest identyczny z routingu wiadomości z zewnątrz wystąpienie.W szczególności przekazywanie wiadomości muszą być aktywne dla Service Broker do przesyłania wiadomości adres sieci innych niż "LOKALNĄ".

Dublowanie adresów

trasa z dublowania adresów mają pierwszeństwo podczas wybierania trasa spośród początkowego zestaw pasujących tras.Jednakże Service Broker nie zwraca szczególną uwagę do dublowania adresy przy znajdowaniu pasujących tras do konwersacji.

Gdy Service Broker wybiera trasa, która określa adres dublowania, i Service Broker wydał wcześniej wiadomości przy użyciu trasa, Service Broker wysyła żądanie oba adresy, aby określić, której wystąpienie jest obecnie głównego zobowiązanego.Gdy Service Broker identyfikuje główne, Service Broker wysyła wszystkie komunikaty używające trasa do głównej bez kontaktowania się z woluminu dublowanego wystąpienie.Jeżeli główny zobowiązany jest nieosiągalny lub wystąpienia wskazuje, że nie jest już dającego zlecenie, Service Broker wysyła wiadomości do innego adresu dla pary, jeśli wystąpienie SQL Server pod adresem wskazuje ona nowy podmiot.

In cases where Service Broker cannot reach the principal but the partner does not claim to be new principal, Service Broker does not send messages to the partner.Service Broker then retries the principal address and the partner address until either the principal is reachable, or the partner indicates that it is now the principal.Przyjmując takie podejście Service Broker niezawodnie dostarcza wiadomości kapitału i partner może komunikować się, ale wystąpienie wysyłania wiadomości nie można osiągnąć głównego zobowiązanego.