MQSCorrelationSetOrchestrationWithSolicitResponse (BizTalk Server 範例)
MQSCorrelationSetOrchestrationWithSolicitResponse 範例將示範如何使用 MQSeries Server (而非 BizTalk Server) 產生的相互關聯識別項。
此範例的用途
協調流程會傳送訊息,其中包含訊息標頭中 MQMD_MsgID 屬性的空白值。 MQSeries 會產生 MessageID 和 CorrelationID,並傳回指派給 MQMD_MsgID 和 MQMD_CorrelId 做為配接器要求回應傳送埠一部分的訊息。 協調流程會使用產生的相互關聯識別碼來初始化相互關聯集,並藉由檢查訊息的 MQMD_CorrelId 屬性,追蹤後續接收位置中的相互關聯集。 配接器也會將相互關聯識別碼指派給 BizTalk_CorrelationID,您也可以在協調流程中使用。 如需搭配配接器使用相互關聯識別碼的詳細資訊,請參閱 使用 Request-Reply 將訊息相互關聯。
重要
如果 MQSeries Server 傳送的訊息比相互關聯識別項先抵達,使用這種方式的協調流程可能會發生問題。 請確定您在設計協調流程時,給予 MQSeries Server 足夠的時間傳回相互關聯識別項。 本範例並未將這種可能的競爭情形列入考量。
可在何處找到此範例
< 範例 Path >\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse
下表顯示此範例中的檔案,並描述其用途。
檔案 | 說明 |
---|---|
MQSCorrelationSolicitResponse.btproj、 MQSCorrelationSolicitResponse.sln |
應用程式的專案和方案檔。 |
MQSCorrelationSolicitResponse.odx | 應用程式的 BizTalk 協調流程檔案。 |
MQSCorrelationSolicitResponse.snk | 強式命名金鑰檔。 |
Setup.bat | 建置並初始化此範例。 |
如何使用此範例
若要建立此應用程式,您必須完成下列步驟:
建立兩個 MQSeries 佇列。
設定 BizTalk Server 接收位置和傳送埠。
啟用接收位置。
啟動傳送埠。
建立適當的資料夾。
修改協調流程。
部署、繫結和啟動協調流程。
如果您有 MQSeries Server for Windows 安裝的必要權限,則可以透過配接器對話方塊建立 MQSeries 佇列並略過下一個程序。 如果您沒有這類存取權限,可以使用 IBM WebSphere MQ Explorer 來建立佇列。 若要透過 WebSphere MQ Explorer 建立佇列,請完成下列步驟:
透過 WebSphere MQ Explorer 建立 MQSeries 佇列
若要透過 WebSphere MQ Explorer 建立 MQSeries 佇列
依序按一下 [開始]、[ 所有程式] 和 [ IBM WebSphere MQ],然後按一下 [ WebSphere MQ 總管]。
按兩下 [ 佇列管理員],然後按兩下預設佇列管理員。 預設佇列管理員通常會命名為QM_< machine_name >其中machine_name是您電腦的名稱。
以滑鼠右鍵按一下 [ 佇列],指向 [ 新增],然後按一下 [ 本機佇列]。
在 [建立本機佇列 ] 對話方塊的 [ 佇列名稱] 中,輸入 「REPLYTOQ」,然後按一下 [ 確定]。
以滑鼠右鍵按一下 [ 佇列],按一下 [ 新增],然後按一下 [ 本機佇列]。
在 [ 建立本機佇列 ] 對話方塊的 [ 佇列名稱] 中,輸入 「SOLICITRESPONSEQ」,然後按一下 [ 確定]。
建立接收位置與 MQSeries 佇列
此程序會建立傳送埠和接收位置,以傳送訊息至 MQSeries 以及接收來自 MQSeries 的相互關聯訊息。 如果您還沒有建立 MQSeries 佇列,則在建立接收位置時,也會建立 MQSeries 佇列。
建立接收位置與 MQSeries 佇列
開啟 BizTalk Server 管理主控台。
依序展開 [BizTalk Server管理]、[BizTalk 群組]、[應用程式] 和 [必要應用程式]。
以滑鼠右鍵按一下 [接收埠],指向 [ 新增],然後按一下 [單向接收埠]。
在 [單向接收埠屬性 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 「MQReply」,然後按一下 [ 確定]。
在左窗格中,按一下 [ 接收位置] 索引標籤,然後按一下 [ 新增]。
在 [ 接收位置屬性 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 「MQReply」。
在 [ 傳輸類型] 方塊中,選取 [MQSeries]。
在 [ 接收處理常式] 方塊中,選取 [BizTalkServerApplication]。
在 [ 接收管線 ] 方塊中,選取 [Microsoft.BizTalk.DefaultPipelines.PassThruReceive]。
按一下 [設定] 。
在 [ MQSeries 傳輸屬性 ] 對話方塊的 [ 輪詢間隔 ] 方塊中,輸入 「10」。
在 [ 佇列定義 ] 方塊中,按一下省略號 (...) 按鈕。
在 [ 佇列定義 ] 對話方塊的 [ 伺服器名稱 ] 方塊中,輸入您的電腦名稱稱。
在 [ 佇列管理員] 方塊中,選取預設佇列管理員。
在 [ 佇列] 方塊中,輸入 「REPLYTOQ」,然後按一下 [ 匯出]。
在 [ 匯出 ] 對話方塊中,按一下 [ 建立佇列],然後按一下 [確定] 或 [ 完成 ],直到您結束所有對話方塊為止。
建立傳送埠和 MQSeries 佇列
若要建立傳送埠和 MQSeries 佇列
以滑鼠右鍵按一下 [傳送埠],指向 [ 新增],然後按一下 [ 靜態單向傳送埠]。
在 [ 傳送埠屬性 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 「MQSolicitResponse」。
在 [ 傳輸類型] 方塊中,選取 [MQSeries]。
在 [ 傳送管線 ] 方塊中,選取 [Microsoft.BizTalk.DefaultPipelines.PassThruTransmit]。
在 [ 接收管線 ] 方塊中,選取 [Microsoft.BizTalk.DefaultPipelines.PassThruReceive]。
按一下 [設定] 。
在 [ MQSeries 傳輸屬性 ] 對話方塊的 [ 佇列定義 ] 方塊中,按一下省略號 (...) 按鈕。
在 [ 佇列定義 ] 對話方塊的 [ 伺服器名稱 ] 方塊中,輸入您的電腦名稱稱。
在 [ 佇列管理員] 方塊中,選取預設佇列管理員。
在 [ 佇列] 方塊中,輸入 「SOLICITRESPONSEQ」,然後按一下 [ 匯出]。
在 [匯出] 對話方塊中,按一下 [ 建立佇列],然後按一下 [ 確定 ] 或 [ 完成 ],直到您結束所有對話方塊為止。
啟用接收位置及啟動傳送埠
這個程序會建立協調流程接收檔案所需的資料夾,並將相互關聯訊息和回應訊息傳送到輸出資料夾。
啟用接收位置和啟動傳送埠
在 BizTalk Server 管理主控台中,按一下 [接收埠]。
在詳細資料窗格中,以滑鼠右鍵按一下 MQIn 接收位置,然後按一下 [ 啟用]。
在詳細資料窗格中,以滑鼠右鍵按一下 MQOut 傳送埠,然後按一下 [ 啟動]。
建立應用程式使用的資料夾
若要建立應用程式使用的資料夾
在 C:\ 磁碟機上建立名為 "temp" 的資料夾 (如果沒有的話)。
在名為 「Pickup2」、「Dropit2」 和 「MoveIt」 的 C:\temp 目錄下建立資料夾。
修改應用程式使用的協調流程
這個程序會修改應用程式使用的協調流程。
若要修改應用程式所使用的協調流程:
在 Microsoft Visual Studio 中,按兩下解決方案檔案 MQSCorrelationSolicitResponse.sln以開啟解決方案。
在 [方案總管] 窗格中,按兩下協調流程MQSCorrelationSolicitResponse.odx以檢視協調流程。
按兩下訊息指派圖形 MessageAssignment_1 以啟動 BizTalk 運算式編輯器。
在下列運算式輸入適當的 MQSeries 佇列管理員名稱:
MQSeriesRequestSendMessage(MQSeries.MQMD_ReplyToQMgr) = "QM_<machine_name>";
如果您希望從 BizTalk 傳送的回應訊息包含原始訊息的完整內容,而不只有前 100 個位元組,請在 BizTalk 運算式編輯器中修改下行。
原始行:
MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 768;
變更為:
MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 1792;
在 BizTalk 運算式編輯器中,按一下 [ 確定 ] 以儲存修改過的運算式。
在 Visual Studio 中,選取 [ 檔案],然後選取 [ 全部儲存]。
建置和部署範例
這個程序會建置和部署包含此應用程式所使用協調流程的方案。
若要建置和部署範例
在命令視窗中,瀏覽至下列資料夾:
<Samples Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse
執行檔案 Setup.bat,這會執行下列動作:
為專案建立強式名稱金鑰。
編譯和部署協調流程專案。
使用 FILE 配接器建立傳送埠和接收埠。
注意
由於這個協調流程指定使用 FILE 配接器傳送和接收檔案的繫結,因此當您部署協調流程時,會建立必要的傳送埠、接收埠和接收位置,以供協調流程接收檔案並輸出相互關聯訊息和回應訊息。
繫結與啟動協調流程
這個程序會繫結協調流程與主控件以及適當的傳送埠和接收位置。
若要繫結並啟動協調流程
在 BizTalk Server 管理主控台中,展開[協調流程]資料夾。
在詳細資料窗格中,以滑鼠右鍵按一下 MQSCorrelationSolicitResponse 協調流程,然後按一下 [ 系結]。
將協調流程連接埠繫結至下列傳送埠和接收位置:
協調流程連接埠 傳送埠/接收位置 FileReceivePort MQSCorrelationSolicitResponse.Orchestration.FileReceivePort MQSeriesResponseReceivePort MQReply SolicitResponsePort MQSolicitResponse TempPort MQSCorrelationSolicitResponse.Orchestration.TempPort FileSendPort MQSCorrelationSolicitResponse.Orchestration.FileSendPort 按一下 [ 主機]。
在 [ 主機 ] 方塊中,選取 [BizTalkServerApplication], 然後按一下 [ 確定]。
在 [傳送埠] 中,以滑鼠右鍵按一下 [MQSCorrelationSolicitResponse.Orchestration.TempPort],然後選取 [ 啟動]。
在 [傳送埠] 中,以滑鼠右鍵按一下 [MQSCorrelationSolicitResponse.Orchestration.FileSendPort],然後選取 [ 啟動]。
在 [接收位置]中,以滑鼠右鍵按一下 [MQSCorrelationSolicitResponse.Orchestration.FileReceivePort],然後選取 [ 啟用]。
以滑鼠右鍵按一下協調流程,然後按一下 [ 啟動]。
注意
啟動協調流程也會自動登錄協調流程。
測試應用程式
這個程序會測試應用程式。
若要測試應用程式
將檔案放在 C:\Temp\Pickup2 資料夾中。
檢查 C:\Temp\Dropit2 資料夾中的檔案和 C:\Temp\Moveit資料夾。
C:\Temp\Dropit2資料夾應該包含原本由BizTalk Server挑選的郵件複本。
C:\Temp\Moveit資料夾應該包含訊息識別碼為 (MQMD_MsgId) 的回應檔,以及相互關聯識別碼 (MQMD_CorrelId) 。
注意
如果您停用 MQReply 接收位置,您可以在 WebSphere MQ Explorer 中檢查訊息,並查看已設定訊息和相互關聯識別碼。 若要這樣做,請啟動 WebSphere MQ Explorer ,並檢查放在 REPLYTOQ 佇列中的訊息。 訊息和相互關聯識別碼會顯示在[訊息屬性] 對話方塊的 [識別碼] 索引標籤上。