共用方式為


MQSCorrelationSetOrchestrationWithSolicitResponse (BizTalk Server 範例)

MQSCorrelationSetOrchestrationWithSolicitResponse 範例將示範如何使用 MQSeries Server (而非 BizTalk Server) 產生的相互關聯識別項。

此範例的用途

協調流程會傳送訊息,其中包含訊息標頭中 MQMD_MsgID 屬性的空白值。 MQSeries 會產生 MessageID 和 CorrelationID,並傳回指派給 MQMD_MsgIDMQMD_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 佇列

  1. 依序按一下 [開始]、[ 所有程式] 和 [ IBM WebSphere MQ],然後按一下 [ WebSphere MQ 總管]。

  2. 按兩下 [ 佇列管理員],然後按兩下預設佇列管理員。 預設佇列管理員通常會命名為QM_< machine_name >其中machine_name是您電腦的名稱。

  3. 以滑鼠右鍵按一下 [ 佇列],指向 [ 新增],然後按一下 [ 本機佇列]。

  4. [建立本機佇列 ] 對話方塊的 [ 佇列名稱] 中,輸入 「REPLYTOQ」,然後按一下 [ 確定]。

  5. 以滑鼠右鍵按一下 [ 佇列],按一下 [ 新增],然後按一下 [ 本機佇列]。

  6. 在 [ 建立本機佇列 ] 對話方塊的 [ 佇列名稱] 中,輸入 「SOLICITRESPONSEQ」,然後按一下 [ 確定]。

建立接收位置與 MQSeries 佇列

此程序會建立傳送埠和接收位置,以傳送訊息至 MQSeries 以及接收來自 MQSeries 的相互關聯訊息。 如果您還沒有建立 MQSeries 佇列,則在建立接收位置時,也會建立 MQSeries 佇列。

建立接收位置與 MQSeries 佇列

  1. 開啟 BizTalk Server 管理主控台。

  2. 序展開 [BizTalk Server管理]、[BizTalk 群組]、[應用程式] 和 [必要應用程式]。

  3. 以滑鼠右鍵按一下 [接收埠],指向 [ 新增],然後按一下 [單向接收埠]。

  4. [單向接收埠屬性 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 「MQReply」,然後按一下 [ 確定]。

  5. 在左窗格中,按一下 [ 接收位置] 索引標籤,然後按一下 [ 新增]。

  6. 在 [ 接收位置屬性 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 「MQReply」。

  7. 在 [ 傳輸類型] 方塊中,選取 [MQSeries]。

  8. 在 [ 接收處理常式] 方塊中,選取 [BizTalkServerApplication]。

  9. 在 [ 接收管線 ] 方塊中,選取 [Microsoft.BizTalk.DefaultPipelines.PassThruReceive]。

  10. 按一下 [設定] 。

  11. 在 [ MQSeries 傳輸屬性 ] 對話方塊的 [ 輪詢間隔 ] 方塊中,輸入 「10」。

  12. 在 [ 佇列定義 ] 方塊中,按一下省略號 (...) 按鈕。

  13. 在 [ 佇列定義 ] 對話方塊的 [ 伺服器名稱 ] 方塊中,輸入您的電腦名稱稱。

  14. 在 [ 佇列管理員] 方塊中,選取預設佇列管理員。

  15. 在 [ 佇列] 方塊中,輸入 「REPLYTOQ」,然後按一下 [ 匯出]。

  16. 在 [ 匯出 ] 對話方塊中,按一下 [ 建立佇列],然後按一下 [確定] 或 [ 完成 ],直到您結束所有對話方塊為止。

建立傳送埠和 MQSeries 佇列

若要建立傳送埠和 MQSeries 佇列

  1. 以滑鼠右鍵按一下 [傳送埠],指向 [ 新增],然後按一下 [ 靜態單向傳送埠]。

  2. 在 [ 傳送埠屬性 ] 對話方塊的 [ 名稱 ] 方塊中,輸入 「MQSolicitResponse」。

  3. 在 [ 傳輸類型] 方塊中,選取 [MQSeries]。

  4. 在 [ 傳送管線 ] 方塊中,選取 [Microsoft.BizTalk.DefaultPipelines.PassThruTransmit]。

  5. 在 [ 接收管線 ] 方塊中,選取 [Microsoft.BizTalk.DefaultPipelines.PassThruReceive]。

  6. 按一下 [設定] 。

  7. 在 [ MQSeries 傳輸屬性 ] 對話方塊的 [ 佇列定義 ] 方塊中,按一下省略號 (...) 按鈕。

  8. 在 [ 佇列定義 ] 對話方塊的 [ 伺服器名稱 ] 方塊中,輸入您的電腦名稱稱。

  9. 在 [ 佇列管理員] 方塊中,選取預設佇列管理員。

  10. 在 [ 佇列] 方塊中,輸入 「SOLICITRESPONSEQ」,然後按一下 [ 匯出]。

  11. 在 [匯出] 對話方塊中,按一下 [ 建立佇列],然後按一下 [ 確定 ] 或 [ 完成 ],直到您結束所有對話方塊為止。

啟用接收位置及啟動傳送埠

這個程序會建立協調流程接收檔案所需的資料夾,並將相互關聯訊息和回應訊息傳送到輸出資料夾。

啟用接收位置和啟動傳送埠

  1. 在 BizTalk Server 管理主控台中,按一下 [接收埠]。

  2. 在詳細資料窗格中,以滑鼠右鍵按一下 MQIn 接收位置,然後按一下 [ 啟用]。

  3. 在詳細資料窗格中,以滑鼠右鍵按一下 MQOut 傳送埠,然後按一下 [ 啟動]。

建立應用程式使用的資料夾

若要建立應用程式使用的資料夾

  1. 在 C:\ 磁碟機上建立名為 "temp" 的資料夾 (如果沒有的話)。

  2. 在名為 「Pickup2」、「Dropit2」 和 「MoveIt」 的 C:\temp 目錄下建立資料夾。

修改應用程式使用的協調流程

這個程序會修改應用程式使用的協調流程。

若要修改應用程式所使用的協調流程:

  1. 在 Microsoft Visual Studio 中,按兩下解決方案檔案 MQSCorrelationSolicitResponse.sln以開啟解決方案。

  2. 在 [方案總管] 窗格中,按兩下協調流程MQSCorrelationSolicitResponse.odx以檢視協調流程。

  3. 按兩下訊息指派圖形 MessageAssignment_1 以啟動 BizTalk 運算式編輯器。

  4. 在下列運算式輸入適當的 MQSeries 佇列管理員名稱:

    MQSeriesRequestSendMessage(MQSeries.MQMD_ReplyToQMgr) = "QM_<machine_name>";

  5. 如果您希望從 BizTalk 傳送的回應訊息包含原始訊息的完整內容,而不只有前 100 個位元組,請在 BizTalk 運算式編輯器中修改下行。

    • 原始行:

      MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 768;

    • 變更為:

      MQSeriesRequestSendMessage(MQSeries.MQMD_Report) = 1792;

  6. 在 BizTalk 運算式編輯器中,按一下 [ 確定 ] 以儲存修改過的運算式。

  7. 在 Visual Studio 中,選取 [ 檔案],然後選取 [ 全部儲存]。

建置和部署範例

這個程序會建置和部署包含此應用程式所使用協調流程的方案。

若要建置和部署範例

  1. 在命令視窗中,瀏覽至下列資料夾:

    <Samples Path>\AdaptersUsage\MQSeriesAdapter\MQSCorrelationSetOrchestrationWithSolicitResponse

  2. 執行檔案 Setup.bat,這會執行下列動作:

    1. 為專案建立強式名稱金鑰。

    2. 編譯和部署協調流程專案。

    3. 使用 FILE 配接器建立傳送埠和接收埠。

    注意

    由於這個協調流程指定使用 FILE 配接器傳送和接收檔案的繫結,因此當您部署協調流程時,會建立必要的傳送埠、接收埠和接收位置,以供協調流程接收檔案並輸出相互關聯訊息和回應訊息。

繫結與啟動協調流程

這個程序會繫結協調流程與主控件以及適當的傳送埠和接收位置。

若要繫結並啟動協調流程

  1. 在 BizTalk Server 管理主控台中,展開[協調流程]資料夾。

  2. 在詳細資料窗格中,以滑鼠右鍵按一下 MQSCorrelationSolicitResponse 協調流程,然後按一下 [ 系結]。

  3. 將協調流程連接埠繫結至下列傳送埠和接收位置:

    協調流程連接埠 傳送埠/接收位置
    FileReceivePort MQSCorrelationSolicitResponse.Orchestration.FileReceivePort
    MQSeriesResponseReceivePort MQReply
    SolicitResponsePort MQSolicitResponse
    TempPort MQSCorrelationSolicitResponse.Orchestration.TempPort
    FileSendPort MQSCorrelationSolicitResponse.Orchestration.FileSendPort
  4. 按一下 [ 主機]。

  5. 在 [ 主機 ] 方塊中,選取 [BizTalkServerApplication], 然後按一下 [ 確定]。

  6. [傳送埠] 中,以滑鼠右鍵按一下 [MQSCorrelationSolicitResponse.Orchestration.TempPort],然後選取 [ 啟動]。

  7. [傳送埠] 中,以滑鼠右鍵按一下 [MQSCorrelationSolicitResponse.Orchestration.FileSendPort],然後選取 [ 啟動]。

  8. [接收位置]中,以滑鼠右鍵按一下 [MQSCorrelationSolicitResponse.Orchestration.FileReceivePort],然後選取 [ 啟用]。

  9. 以滑鼠右鍵按一下協調流程,然後按一下 [ 啟動]。

    注意

    啟動協調流程也會自動登錄協調流程。

測試應用程式

這個程序會測試應用程式。

若要測試應用程式

  1. 將檔案放在 C:\Temp\Pickup2 資料夾中。

  2. 檢查 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 佇列中的訊息。 訊息和相互關聯識別碼會顯示在[訊息屬性] 對話方塊的 [識別碼] 索引標籤上。

另請參閱

使用要求-回應相互關聯訊息
MQSeries 配接器範例