Udostępnij za pośrednictwem


Komunikaty systemu brokera

Service Broker używa trzy typy komunikatów systemu do przekazywania informacji dotyczących stanu i błędów z Service Broker.

Obsługa komunikaty systemu

Większość komunikatów w Service Broker konwersacji są zdefiniowane przez aplikację wiadomości, używane do komunikacji między usługami. Każda wiadomość musi spełniać format typ komunikatu, który został zdefiniowany przez instrukcję CREATE typu MESSAGE.Zestaw typów wiadomości dozwolonych dla konwersacji jest definiowany przez kontrakt, określony w instrukcja BEGIN KONWERSACJI DIALOG.

Oprócz typów zdefiniowanych przez aplikację wiadomości, określonych w kontrakt, każdej konwersacji może również odbierać wiadomości, które należy użyć jednej z trzech typów zdefiniowanych przez system wiadomości.Te typy wiadomości są używane przez Service Broker Aby włączyć raportowanie błędów oraz stan tych okien dialogowych. Każda aplikacja musi zawierać logiką, służący do obsługi komunikaty o błędach i komunikaty End Dialog.If the application sets a conversation timer on a dialog conversation, the application must contain logic to handle Dialog Timer messages.Service Broker provides these message types to every service, whether they appear in the contract for the service or not.Aby uzyskać więcej informacji zobacz Obsługa komunikatów o błędach usługa Broker.

Komunikaty o błędach

Zdalna usługa kończy się okno dialogowe z powodu błędu lub lokalnego brokera wykrywa nieodwracalny błąd w jedno z okien dialogowych, lokalne brokera tworzy komunikat o błędzie.Komunikaty o błędach są tego typ komunikatu **https://schemas.Microsoft.com/SQL/ServiceBroker/Error**.Komunikaty o błędach sprawdzania poprawności jak poprawnie sformułowany kod XML.

Dokument XML, w którym znajduje się w komunikat o błędzie korzysta z obszaru nazw **https://schemas.Microsoft.com/SQL/ServiceBroker**.Element główny dokumentu ma nazwę lokalnego Błąd, a zawiera element o nazwie Kod oraz elementu o nazwie Wiadomość.The Code element holds an integer value.The Message element holds the human-readable text of the message.

Na przykład komunikat o błędzie generowanych przez usługa, która przetwarza raporty wydatków może zawierać następujący kod XML (przekształcony na czytelność):

<?xml version="1.0"?>
<Error xmlns="https://schemas.microsoft.com/SQL/ServiceBroker">
  <Code>12</Code>
  <Description>
    Unknown cost center "127-1000". Please check the cost center list
    and resubmit the report.
  </Description>
</Error>

Operacja odbioru odbiera komunikat o błędzie przed żadnego komunikatu dla tego okna dialogowego innych niż czasomierz komunikat okna dialogowego.Dzieje się tak niezależnie od kolejności, w którym odebrano komunikat o błędzie w kolejce.Jeśli komunikat o błędzie i komunikat okna dialogowego czasomierza kolejki, operacja odbioru odbiera komunikat czasomierza okna dialogowego przed komunikat o błędzie.

Po odebraniu komunikatu o błędzie dla okna dialogowego, brokera zgłasza błąd, jeżeli aplikacja próbuje wysłać wiadomość w tym oknie dialogowym.Jednak aplikacji mogą odbierać wszelkie pozostałe wiadomości dla okna dialogowego, nawet po otrzymaniu komunikatu o błędzie.

Koniec okna dialogowego wiadomości

Gdy aplikacja zakończy się okno dialogowe bez określenia błąd, lokalne brokera wysyła wiadomość okno dialogowe koniec do zdalnego brokera.Koniec okna dialogowego wiadomości są typ komunikatu https://schemas.Microsoft.com/SQL/ServiceBroker/EndDialog.

Koniec okna dialogowego wiadomości są wiadomościami puste.Operacja odbioru odbiera komunikat okna dialogowego Zakończ w kolejności, w którym odebrano wiadomość w kolejce.

Okno dialogowe Timer wiadomości

Okno dialogowe czasomierza wiadomości wskazują wygasł czasomierz konwersacji na jedno z okien dialogowych.Te komunikaty są tego typ komunikatu **https://schemas.Microsoft.com/SQL/ServiceBroker/DialogTimer**.Czasomierz konwersacji jest specyficzne dla jednej strony konwersacji; Service Broker nigdy nie przesyła komunikat okna dialogowego czasomierza na drugą stronę do konwersacji.

Okno dialogowe czasomierza wiadomości są wiadomościami puste.Operacja odbioru odbiera komunikat czasomierza okno dialogowe przed innymi wiadomości dla tego okna dialogowego, niezależnie od kolejności, w którym odebrano komunikat limit czas dla kolejki.