Udostępnij za pośrednictwem


usługa Broker routingu

W tym temacie opisano szczegóły dotyczące Service Broker przesyła wiadomości. Aby uzyskać więcej informacji na temat zobacz Trasy.

Dla większości aplikacji, prostym sposobem Service Broker Routing działa dobrze. W każdej bazy danych zawiera usługi określ trasa dla zewnętrznych Usługa komunikuje się z usługi.Jednak Service Broker zapewnia wyrafinowany system routingu obsługi przypadkach, w których aplikacja wymaga zachowania bardziej złożone. Przykłady ilustrują procesu routingu można znaleźć w temacie usługa Broker Routing przykłady.

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, z którą tworzona konwersacji. Dla konwersacji przychodzące z zewnątrz wystąpienie, SQL Server wyszukiwanie msdb.sys.routes.

Podstawowy proces dopasowania jest taka sama, jak czy pochodzi konwersacji w wystąpieniu lub na zewnątrz wystąpienie.Ten proces powoduje ignorowanie tras, które wygasły.Proces routingu składa się z trzech różnych etapów:

  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 trasa określa wybrany "LOKALNA" jako adres sieciowy Service Broker Lokalizuje usługi w wystąpieniu. Jeśli usługa nie istnieje w wystąpienie, Service Broker być może powrócić do kroku 2 i wybierz polecenie innej 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 komunikatów potwierdzenia zobacz Protokoły Communication usługa Broker.

Wiadomości odpowiedzi z usługa sieci miejsce docelowe

Gdy wiadomości przychodzącej z zewnątrz wystąpienie jest z usługa docelową SQL Server sprawdza, czy zawiera bieżące wystąpienie Service Broker Identyfikator w wiadomości. Jeśli tak, następnie wiadomość zostanie dostarczona w bieżącym wystąpienie zgodnie z opisem w „ lokalizowanie usługa obiekt docelowy. „ W przeciwnym razie SQL Server następujące standardowe dopasowywania procesów.

Znajdowanie, dopasowywanie trasy

Poniższa procedura opisuje sposób SQL Server taka sama, jak trasy. Na każdym etapie, jeśli jeden lub więcej tras, pasujące proces kończy się, a Service Broker wybiera jeden z pasujących tras w następujący sposób:

  1. Jeśli konwersacji określa Service Broker Identyfikator wyszukiwania, a trasa o dokładny odpowiednik nazwy usługa i Service Broker identyfikator.

  2. Znaleźć dokładny odpowiednik nazwy usługa między tras, które nie mają określonego 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 tras, które odpowiadają nazwy usługa i mieć różne Service Broker identyfikatory, arbitralnie pobrania Service Broker identyfikator. Następnie należy dopasować tylko trasy, które należy ją Service Broker identyfikator.

  4. Jeśli istnieje trasa do dynamicznej usługa routingu i nie żądania dla trasy do usługa jest w stanie oczekiwania, należy oznaczyć konwersacji, opóźnione i żądania informacji o routingu z tej usługa.

  5. Znajdź trasa, która określa ani usługa nazwy 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ługa z nazwy, która jest zgodna z nazwą, która została określona w konwersacji, rozesłać konwersacji tak, jakby trasa o nazwę usługa i adres sieciowy zawartych w tabela routingu "LOKALNA".

  7. Oznacz konwersację opóźnione.

Podczas konwersacji jest oznaczona opóźnione Service Broker wykonuje pasujących procesów ponownie po upływie limitu czas. Należy zauważyć, że awarii, aby znaleźć pasujący trasa nie jest uważana za błąd.

Wybieranie trasa

Jeśli więcej niż jeden trasa pasującej znajdzie pasujących procesów Service Broker wybiera jeden 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 krokiem, jeśli nie ma tras spełniających specyfikację adresu dla kroku.

  1. Wybierz spośród trasa, które Określ adres dublowania tras.

  2. Wybierz jeden trasa spośród tras, które określają "LOKALNA" jako adres sieciowy.Jeśli to wystąpienie SQL Server nie zawiera usługa, który odpowiada nazwie, która została określona w konwersacji, kontynuuj od kroku 3.

  3. Wybierz jeden trasa spośród trasa, które określa adres sieciowy.

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

Jeśli brokera przesyłania dalej nie jest aktywne, Service Broker wiadomości nie spadnie Jeśli konwersacji nie pochodzi bieżące wystąpienie i adres wybrana trasa nie jest "LOKALNA".

Lokalizowanie usługa obiekt obiekt docelowy

Jak opisano wcześniej, Service Broker dostarcza wiadomości do usług na bieżącą instancję podczas dopasowywania trasa określa "LOKALNA" jako adres sieciowy.W przypadku wiadomości spoza wystąpienie marszruty musi znajdować się w msdb.sys.routes.Wiadomości, które pochodzą z wystąpienie, trasa pasującej musi znajdować się w sys.routes tabela bazy danych, który inicjuje komunikację.

Kiedy Service Broker Określa, że usługa dla wiadomości jest w bieżącym wystąpienie, Service Broker należy zlokalizować usługa wystąpienie. Gdy Service Broker w konwersacji lub marszruty, istnieje identyfikator konwersacji Service Broker dostarcza wiadomości do bazy danych, identyfikowane przez Service Broker identyfikator.

W przeciwnym razie Service Broker Lokalizuje usługa pierwszym wyszukiwaniu nazwy usługa w bazie danych, która zawiera 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 zwrócić uwagę, że kolejność, w którym Service Broker wyszukiwanie innych baz danych w wystąpienie jest nieokreślony i nie jest gwarantowane jest zgodny z konwersacji konwersacji. Oznacza to, że jeśli więcej niż jedną kopię usługa miejsce docelowe istnieje w wystąpienie, Service Broker losowo wybiera usługa do miejsce docelowe.

Inne zagadnienia

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 przesyłanie dalej wiadomości śledzi, ile razy wiadomość została przesłana dalej w celu ochrony przed nieograniczone pętli routingu.Aby uzyskać więcej informacji zobacz usługa Broker Przekazywanie 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.Rozsyłanie tych wiadomości jest taka sama, jak routingu dla wiadomości z zewnątrz wystąpienie.W szczególności przesyłanie wiadomości dalej musi być aktywne dla Service Broker do przesyłania dalej komunikatów do adresu w sieci innych niż "LOKALNA".

Adresy dublowania

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

Kiedy Service Broker Wybiera trasa, która określa adres dublowania, a Service Broker nie wydał wcześniej wiadomości przy użyciu trasy, Service Broker wysyła żądanie do oba adresy, można określić, które wystąpienie jest obecnie głównej. Kiedy Service Broker identyfikuje spłaty kapitału, Service Broker wysyła wszystkie wiadomości, używających trasa do głównej bez kontaktowania się z wystąpienie dublowania. Jeśli główny jest nieosiągalny, lub wskazuje, że to wystąpienie jest już spłaty kapitału, Service Broker wysyła wiadomości do innych adresów dla pary, jeśli wystąpienie SQL Server pod adresem wskazuje, że jest on 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.Wykonując takie podejście Service Broker niezawodne dostarcza wiadomości, gdy kapitał i partner może komunikować się, ale wystąpienie, wysyłając ten komunikat nie może uzyskać dostępu do głównej.