交易式配接器 (BizTalk Server 範例)
交易式配接器範例示範處理 BizTalk Server 訊息時,如何針對資料庫建立和使用明確的 Microsoft 分散式交易協調器 (MSDTC) 交易。
此範例的用途
此範例包含接收配接器,會依使用者指定的間隔執行 SQL 陳述式,以便從使用 MSDTC 交易的 SQL Server 資料庫取得資料。 然後在相同交易的環境下,以訊息的形式將資料提交到 BizTalk Server MessageBox 資料庫。
對應的傳送配接器會使用交易環境中的 BizTalk 訊息的輸入,以執行使用者指定的 SQL 預存程序。 它使用該訊息中的特定資料,透過上述相同交易從 MessageBox 資料庫中尋找和刪除對應訊息。
此範例的設計方式和原因
這個範例在其解決方案中有兩個專案。 第一個是管理專案 (Admin),可在執行階段前用來讓使用者設定使用此配接器的接收位置和傳送埠。 第二個是執行階段專案 (Runtime),可在傳送配接器及接收配接器正在執行時執行。
可在何處找到此範例
這個範例位於下列 SDK 位置:
<範例路徑>\Samples\AdaptersDevelopment\TransactionalAdapter。 管理組態專案位於 \Admin 資料夾,而執行階段專案則存在於 \Runtime 資料夾。
下表顯示此範例中的檔案,並描述其用途。
Admin 專案檔案名稱 | Admin 專案檔案描述 |
---|---|
TransactionalAdmin.csproj | 用於執行階段前組態的配接器管理專案檔案 |
TransactionalReceiveHandler.xsd | 接收處理常式屬性的 XSD |
TransactionalReceiveLocation.xsd | 接收位置屬性的 XSD |
TransactionalTransmitLocation.xsd | 傳輸位置屬性的 XSD |
TransactionalTransmitHandler.xsd | 傳輸處理常式屬性的 XSD |
TransactionalAdapterManagement.cs | 配接器組態管理。 包含 GetConfigSchema,這是由 BizTalk 配接器架構所叫用,以傳回它支援的每一個組態類型 (共四個可能類型) 的 XSD 組態結構描述。 |
執行階段專案檔案名稱 | 執行階段專案檔案描述 |
---|---|
Transactional.csproj | 配接器執行階段專案檔案 |
TransactionalAsyncBatch.cs | 配接器傳送組件的非同步實作 |
TransactionalDeleteBatch.cs | 刪除訊息及表決批次以認可或中止交易 |
TransactionalProperties.cs | 擷取和設定組態屬性 |
TransactionalReceiver.cs | 建立和管理接收結束點 |
TransactionalReceiverEndpoint.cs | 每個接收位置的實際監聽或輪詢 |
TransactionalTransmitter.cs | 從傳訊引擎接受要被傳送的訊息批次 |
如何使用此範例
這個範例主要提供可用來做為使用明確交易建立自訂傳送配接器及接收配接器的架構。
建置和初始化此範例
重要
如果 BizTalk 安裝是 64 位元,或安裝位置已有修改,則需要隨之變更 OutboundAssemblyPath、InboundAssemblyPath、AdapterMgmtAssemblyPath。
建立交易式配接器範例的強式名稱金鑰
啟動 Visual Studio 命令提示字元。
在命令提示字元輸入下列命令,然後按下 ENTER:
cd \Program Files\Microsoft BizTalk Server <version>\SDK\Samples\AdaptersDevelopment\TransactionalAdapter\Runtime
在命令提示字元輸入下列命令,然後按下 ENTER:
sn –k TransactionalAdapter.snk
在命令提示字元中,輸入 exit,然後按 Enter 以關閉命令提示字元視窗。
建置交易式配接器解決方案
按一下 [開始],指向 [所有程式],指向 [配件],然後按一下 [ Windows 檔案總管]。
流覽至 \Program Files (x86) \Microsoft BizTalk Server < VERSION > SDK\Samples\AdaptersDevelopment\TransactionalAdapter,然後按兩下 [TransactionalAdapter.sln] 以在 Visual Studio 中開啟此方案。
若要在 方案總管 中建置交易式配接器專案 (管理員 和執行時間) ,請以滑鼠右鍵按一下[方案交易式][交易式][Adapter],然後按一下 [重建]。
執行此範例
註冊交易式配接器
在 Windows 檔案總管中,流覽至 \Program Files (x86) \Microsoft BizTalk Server < VERSION > SDK\Samples\AdaptersDevelopment\TransactionalAdapter\管理員。
若要將交易式配接器資料新增至登錄,請按兩下 [交易式][Admin.reg]。
注意
TransactionalAdmin.reg包含 C:\Program Files\Microsoft BizTalk Server\ 的硬式編碼路徑。 如果您未在預設位置安裝BizTalk Server,或從舊版升級BizTalk Server安裝,則必須使用適當的路徑修改檔案 TransactionalAdmin.reg。 更新與 "InboundAssemblyPath"、"OutboundAssemblyPath" 和 "AdapterMgmtAssemblyPath" 值相關聯的路徑,以指向指定檔案的正確位置。
重要
如果您在 64 位電腦上安裝 BizTalk,請將 HKEY_CLASSES_ROOT\CLSID\ 登錄專案的所有實例變更為 交易式Admin.reg 登錄檔中的 HKEY_CLASSES_ROOT\Wow6432Node\CLSID\。
在 [ 登錄編輯程式] 對話方塊中,按一下 [ 是 ] 將範例配接器新增至登錄,然後按一下 [ 確定]。
若要關閉 Windows 檔案總管,請按一下 [ 檔案],然後按一下 [ 關閉]。
將交易式配接器加入至 BizTalk Server
按一下 [開始]功能表,選取 [所有程式],選取[Microsoft BizTalk Server 20xx],然後選取[BizTalk Server管理]。
在 [BizTalk Server管理] 中,展開[BizTalk Server系統管理] 樹狀目錄、[BizTalk 群組] 樹狀目錄,然後展開 [平臺設定] 樹狀目錄。
以滑鼠右鍵按一下 [ 配接器],按一下 [ 新增],然後按一下 [ 配接器]。
在 [ 配接器屬性 ] 對話方塊中,執行下列動作。
使用 作法 名稱 輸入 TransactionalAdapter。 配接器 從下拉式清單中選取 [Txn ]。 此專案會顯示為先前執行 TransactionalAdmin.reg 檔案的結果。 Description 類型 範例交易式配接器。 按一下 [確定 ]。配接器現在會出現在 BizTalk 管理主控台右側視窗中的介面卡清單中。
建立使用配接器的接收埠和接收位置
展開 [BizTalk Server管理] 中的[BizTalk 群組[伺服器名稱]節點,展開 [應用程式] 節點,然後展開[BizTalk 應用程式 1] 節點。
以滑鼠右鍵按一下 [接收埠],然後按一下 [ 新增],選取 [單向接收埠]。
針對 [名稱],輸入 TxnReceivePort1,然後按一下 [ 確定]。
以滑鼠右鍵按一下 [ 接收位置] 節點,按一下 [ 新增],然後選取 [單向接收位置]。
在 [選取接收埠 ] 對話方塊中,選取 [TxnReceivePort1],然後按一下 [ 確定]。
在 [ 接收位置屬性 ] 對話方塊的 [ 一般 ] 索引標籤下,輸入 TxnReceiveLocation1 以取得 [名稱]。 確定 [接收埠] 標籤會顯示 TxnReceivePort1。
在 [類型] 下拉式清單方塊的 [傳輸 框架] 中,選取 [交易式][Adapter]。
在 [ 接收管線 ] 方塊中,確定已選取 PassThruReceive 。 剩下的屬性則保留其預設設定。
按一下 [類型]下拉式方塊旁的 [設定] 按鈕。 這樣會顯示這個配接器專用的對話方塊。 如您看到適當情況,請指定下列內容,然後按一下 [ 確定]。
屬性 設定 連接字串 用來連接和驗證 Northwind 資料庫的 SQL 資料庫連接字串。 我們稍後會執行使用這個資料庫的 SQL 指令碼。 命令文字 對 Northwind 資料庫所執行的 SQL 陳述式,用意在取得資料以置入 BizTalk 訊息中。 Cookie 包含 URI 的一部分,因此請輸入唯一的值,例如接收位置的名稱:TxnReceiveLocation1。 輪詢間隔單位 資料輪詢的時間量值單位數。 設定為秒數。 輪詢間隔 資料輪詢的時間量值單位。 設定為 15 秒。 按一下[確定] 以關閉 [設定] 對話方塊,然後再次按一下[確定] 以關閉 [接收位置屬性] 對話方塊,以返回 [BizTalk Server 管理]。
建立使用配接器的傳送埠和傳送處理常式
在 BizTalk 應用程式 1 節點仍展開後,以滑鼠右鍵按一下 [ 傳送埠],然後按一下 [ 新增],然後選取 [ 靜態 One-Way 傳送埠]。
在 [ 名稱] 欄位中,輸入 TxnSendPort1。
在 [ 傳輸 框架] 的 [ 類型 ] 下拉式清單中,選取[交易式][Adapter]
.
在 [ 傳送管線 ] 方塊中,確定已選取 PassThruTransmit 。
按一下傳輸下拉式清單旁邊的 [設定] 按鈕。在出現的對話方塊中,于您看到適當時指定下列內容,然後按一下 [確定]。
屬性 設定 Cookie 包含 URI 的一部分 - 在此輸入唯一值,例如接收位置的名稱: TxnSendPort1。 連接字串 用來連接和驗證 Northwind 資料庫的 SQL 資料庫連接字串。 最有可能是用來設定 TxnReceiveLocation1 接收位置的相同位置。 預存程序 執行以輪詢資料庫的預存程式名稱 - sp_txnProc。 BizTalk 訊息的本文會以稱為 的 @Data 字串參數的形式提供給該預存程式。 例如,在此案例中,使用者稍後會使用名稱 sp_txnProc來設定預存程式。 配接器的執行階段會對資料庫執行相當於這個呼叫的命令。
exec sp_txnProc @Data = 「BizTalk 訊息的內容」在左側流覽窗格中,按一下 [篩選]。
在篩選條件運算式編輯器中,輸入下列運算式設定訂閱,讓此傳送埠接收 TxnReceivePort1 接收埠收到的任何訊息。
輸入下列值:BTS。ReceivePortName== TxnReceivePort1
(property)
Bts。ReceivePortName(operator)
==(value)
TxnReceivePort1
使用配接器屬性其餘部分的預設值,然後選取 [ 確定]。
執行範例
按一下[開始],指向[所有程式],指向[Microsoft SQL Server 2008 R2],選取[SQL Server Management Studio]。
在 [ 連接到伺服器 ] 對話方塊中,確定 [伺服器類型 ] 設定為 [資料庫引擎],然後輸入要向資料庫伺服器驗證的認證,然後選取 [ 連線]。
選取 [ 新增查詢 ] 工具列按鈕,並將下列內容貼到新的查詢視窗中,以將測試資料表、測試資料和測試預存程式插入 Northwind 資料庫中。 選取 [ 執行 工具列] 按鈕。
use [Northwind] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[scratch]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[scratch] GO CREATE TABLE [dbo].[scratch] ( [id] [int] IDENTITY (1, 1) NOT NULL , [msg] [nvarchar] (4000) NOT NULL ) ON [PRIMARY] GO GRANT SELECT , UPDATE , INSERT ON [dbo].[scratch] TO [public] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_txnProc]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[sp_txnProc] GO CREATE PROCEDURE [dbo].[sp_txnProc] @Data nvarchar (4000) AS INSERT scratch ( msg ) values ( @Data ) GO GRANT EXECUTE ON [dbo].[sp_txnProc] TO [public] GO
在 [BizTalk Server管理] 中,展開 [傳送埠]節點,選取[TxnSendPort1] 傳送埠,然後選取 [啟動]。
在 [BizTalk Server管理] 中,展開[ReceiveLocations] 節點,選取[TxnReceiveLocation1接收位置],然後選取 [啟用]。
啟用接收位置之後,它會以指定的間隔自動輪詢資料庫以取得資料。
範例中使用的類別或方法
COM) (IBTTransmitterBatch 介面
COM (IBTTransportProxy 介面)
這些方法會在 UI 指引和開發人員 API 命名空間參考中說明。