共用方式為


Broker 訊息

應用程式間的大部份通訊,都是透過定義為訊息類型物件之應用程式特定的訊息來處理。此外,Service Broker 提供三種包含 Service Broker 之資訊 (而不是應用程式特定的資料) 的訊息類型。每個應用程式必須包含邏輯,才能處理「錯誤」訊息和「結束對話」訊息。如果應用程式在對話交談上設定交談計時器,則它必須包含邏輯才能處理「對話計時器」訊息。Service Broker 會將這些訊息類型提供給每個服務,不論它們是否出現在服務的合約中。

對話計時器訊息

對話計時器訊息會指示對話上的交談計時器已過期。這些訊息屬於 https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer 訊息類型。交談計時器為交談一方所特有的;Service Broker 絕不會將對話計時器訊息傳送給交談的另一方。

對話計時器訊息為空訊息。不論逾時訊息抵達佇列的順序如何,接收作業都會在接收對話的其他任何訊息之前接收對話計時器訊息。

錯誤訊息

當遠端服務因為錯誤而結束對話,或本機 Broker 在對話中偵測到無法復原的錯誤時,本機 Broker 會建立「錯誤訊息」。錯誤訊息是 https://schemas.microsoft.com/SQL/ServiceBroker/Error 訊息類型。錯誤訊息作為格式正確的 XML 進行驗證。

包含在錯誤訊息中的 XML 文件使用 https://schemas.microsoft.com/SQL/ServiceBroker 命名空間。文件的根元素有 Error 本機名稱,並且包含名為 Code 的元素與名為 Message 的元素。Code 元素包含整數值。Message 元素包含訊息之人們可讀取的文字。

例如,由處理費用報表之服務產生的錯誤訊息可能包含下列 XML (針對可讀性重新格式化):

<?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>

不論錯誤訊息抵達佇列的順序如何,接收作業都會在接收對話的其他任何訊息 (而不是對話計時器訊息) 之前接收錯誤訊息。當佇列同時具有對話計時器訊息和錯誤訊息時,接收作業會在接收錯誤訊息之前接收對話計時器訊息。

一旦對話的錯誤訊息抵達,則當應用程式嘗試在對話上傳送訊息時,Broker 便會引發錯誤。但是,應用程式可以接收此對話的其餘任何訊息,即便是在接收錯誤訊息之後。

結束對話訊息

當應用程式在未指定錯誤的情況下結束對話時,本機 Broker 會將「結束對話」訊息傳送給遠端 Broker。「結束對話」訊息是 https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog 訊息類型。

「結束對話」訊息為空訊息。接收作業會按訊息抵達佇列的順序接收「結束對話」訊息。

請參閱

工作

如何:從 Service Broker 錯誤訊息擷取資訊 (Transact SQL)

說明及資訊

取得 SQL Server 2005 協助