使用 BizTalk Server 從 SQL 接收多個接收位置接收查詢通知
假設您在設定為接收相同資料表的多個接收位置時建立多個接收位置,以接收相同資料表 (的查詢通知,例如相同資料庫中的員工) 。 如果一百筆記錄插入相同的資料表中,所有接收位置都會收到通知訊息。 若要有效地接收多個接收位置的通知,您可以從 BizTalk 應用程式呼叫作業,如此一來,如果一個接收位置收到通知,另一個接收位置就不會收到相同的通知。 因此,您可以有效地對多個位置收到的通知進行負載平衡。
設定協調流程以負載平衡接收通知所需的工作,與使用 BizTalk Server 從 SQL 累加接收查詢通知的工作相同。 本主題列出這兩種方法之間唯一的差異。
跨多個接收位置 Load-Balancing 查詢通知
如同使用 BizTalk Server 從 SQL 以累加方式接收查詢通知主題中,您會在已收到通知的記錄上執行 UPDATE 語句來設定累加通知。 若要設定負載平衡,您可以執行預存程式,以刪除已收到通知的記錄。 例如,請考慮使用下列定義PROCESS_EMPLOYEE預存程式:
DECLARE @var int
SELECT TOP 1 @var = Employee_ID FROM Employee
SELECT * FROM Employee WHERE Employee_ID=@var
DELETE FROM Employee WHERE Employee_ID=@var
當您將此預存程式當做 BizTalk 應用程式的一部分執行時,會收到通知的記錄會被刪除。 因此,另一個接收位置會取得下一筆記錄的通知。
以下是您必須執行的高階步驟,以設定接收通知的負載平衡。
建立 通知 (輸入作業) 和 PROCESS_EMPLOYEE 預存程式 (輸出作業) 的架構。
新增協調流程,並新增三則訊息來接收通知、執行預存程式,以及取得預存程式的回應。
藉由新增傳送和接收圖形、建構訊息圖形和埠來建立協調流程。 您可以使用相同的範例程式碼來建構訊息,以叫用預存程式PROCESS_EMPLOYEE。 請注意,在 BizTalk Server 管理主控台中執行作業時,您必須在 C:\TestLocation\MessageIn 位置中有PROCESS_EMPLOYEE預存程式的要求訊息。 這樣做是因為您在接收查詢通知中以累加方式從 SQL中建立的協調流程程式碼片段會使用 BizTalk Server根據 C:\TestLocation\MessageIn 中存在的要求 XML 建立要求訊息。
建置和部署應用程式。 若要示範負載平衡,您必須至少在已安裝 BizTalk Server 和 SQL 配接器的兩部不同電腦上部署此協調流程。
在這兩部電腦上的 BizTalk Server 管理主控台中,針對 WCF-Custom 或 WCF-SQL 接收位置指定下列系結屬性:
Binding 屬性 值 InboundOperationType 將此設定為 [通知]。 NotificationStatement 將此設定為:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0
注意: 針對通知語句,您必須一律指定資料表名稱以及架構名稱。 例如:dbo.Employee
。NotifyOnListenerStart 將此設定為 True。 啟動 BizTalk 應用程式。
若要開始接收通知,請將一百筆記錄插入 EMPLOYEE 資料表。 這樣做時,請確定叫用PROCESS_EMPLOYEE預存程式的要求 XML 可在 C:\TestLocation\MessageIn 中使用。
監視 BizTalk 應用程式將卸載通知訊息) 這兩部電腦上的位置 (。 您會注意到,插入的百筆記錄,一個位置會取得某些記錄的通知,而另一個位置則會取得剩餘記錄的通知。 這兩個位置都會收到所有百筆記錄的通知。