DynamicReceive 範例 (BizTalk Server 範例)
DynamicReceive 範例示範如何在指定 MQSeries 佇列的 URI 動態時,從 MQSeries 佇列接收BizTalk Server訊息。
此範例的用途
此範例會動態建立 MQSeries 佇列,如 queueManager、 queue和 伺服器 變數所指定。 它會啟用動態接收案例,並根據MQMD_MsgId和MQMD_CorrelId訊息屬性中指定的篩選準則,從動態指定的 MQSeries 佇列取得BizTalk Server訊息。
此範例的設計方式和原因
MQSeries 配接器可以透過在協調流程中指定佇列的 URI 位址,從 MQSeries 佇列動態接收訊息。 您可以在協調流程中使用請求-回應傳送埠來達成這項功能。
若要動態接收訊息,請在協調流程的 運算式 圖形中指定下列內容:
在BizTalk Server訊息上設定下列屬性來啟用動態接收:MQSeries.DynamicReceive =
'Yes'
設定連接埠 URI,以指定取得訊息的來源位址。 您可以選擇指定下列選項:
使用訊息上的 MQSeries.WaitInterval 屬性,指定取得訊息之前的等候間隔。
指定接收訊息的比對準則。 比對準則選項包括 訊息識別碼、 CorrelationID、 GroupID和 MessageSequenceNumber。 See "Properties Related to BizTalk Server" at https://go.microsoft.com/fwlink/?LinkId=89396 for more details.
使用這些屬性建立訊息之後,便會使用請求-回應傳送埠將它傳送到 MQSeries 佇列。 這個傳送埠會使用指定的比對選項,讓配接器從指定的 URI 接收訊息。 產生的結果如下:
如果符合用來取得訊息的篩選準則,便會從佇列擷取訊息,然後再將訊息傳回給協調流程。
如果不符合用來取得訊息的篩選準則,則會傳回虛擬回應。 這表示指定的選項並未從佇列傳回任何訊息。
使用動態接收功能可以讓您擁有更多的彈性,因為您不需要有固定的接收位置。 在某些情況下,您可能必須等到執行階段才會知道 URI。 動態接收功能可讓您動態決定訊息的取得來源。 這也表示您不需要在協調流程內實作佇列合約。 您可以等待,以根據指定的比對準則,使用動態指定的 URI 從 MQSeries 佇列取得訊息。
可在何處找到此範例
<範例路徑>\Samples\AdaptersUsage\MQSeriesAdapter\DynamicReceive
下表顯示此範例中的檔案,並描述其用途。
檔案 | 描述 |
---|---|
DynamicReceive.btproj, DynamicReceive.sln |
應用程式的專案和方案檔。 |
DynamicReceive e.odx | 應用程式的 BizTalk 協調流程檔案。 |
Setup.bat | 用來建立金鑰檔、編譯專案及部署專案的批次檔。 |
如何使用此範例
指定對您解決方案有意義的 Microsoft.XLANGs.BaseTypes.Address 。 變更 MQSeries.WaitInterval ,以指定何時預期會收到回應訊息。 更新 (或加入) 比對選項;如果您想取得所有訊息,則請移除比對選項。
建置並執行範例
若要建立範例
在 Microsoft Visual Studio 中建立新的協調流程專案。
將BizTalk Server訊息上的MQSeries.DynamicReceive屬性設定為
'Yes'
,以啟用動態接收作業。藉由設定 埠 URI,指定要從中取得訊息的位址。
可以選擇指定下列兩個選項:
使用訊息上的 MQSeries.WaitInterval 屬性,指定取得訊息之前的等候間隔。
指定接收訊息的比對準則。 如需詳細資訊,請參閱「比對選項」說明。
在協調流程中變更下列變數,以指定取得訊息的來源:
- Queue、 queueManager和 伺服器。 這些是用來在 運算式 圖形中建置 URI。
修改 運算式 圖形,視需要將動態佇列建立和比對選項批註化。
您可以使用下列其中一種方法來建置及部署專案:
開啟方案,以滑鼠右鍵按一下 [方案總管] 中的專案,然後按一下 [ 屬性 ] 以檢視專案屬性。 在 [簽署] 索引標籤上,按一下< [選擇強式名稱金鑰檔案] 下拉式方塊中的 [新增... >]。 然後提供金鑰檔案名並部署。
或者,執行用來建立金鑰檔、建置專案及部署專案的 setup.bat 檔案。
執行範例
將協調流程繫結到 BizTalk 主控件。
啟用協調流程建立的檔案接收埠。 將檔案接收位置從 c:\temp\in 變更為適當的檔案資料夾。
登錄並啟動建立的兩個傳送埠。 其中一個連接埠屬於動態的請求-回應連接埠類型,另一個則是檔案傳送埠,也是傳送訊息的佇列。 請務必將它設定為正確的位置。
若要啟動協調流程,請將檔案放到輸入資料夾中。 這會叫用 MQSeries 配接器,並在指定的伺服器上呼叫 MQSAgent2 COM+ 元件以取得訊息。 接收訊息會出現在檔案傳送埠中指定的資料夾位置。
如果找不到符合 運算式 圖形中所指定準則的訊息,則會將虛擬訊息放入輸出檔案夾中。 若要停用比對選項,請將 運算式 圖形中的最後兩行批註化。
註解
如果佇列採動態方式建立,但卻不會動態刪除,則在啟動下一個協調流程時,將會發生錯誤。
雖然這個範例只指定了一種選項,但是還有其他方法可以動態設定 URI。 例如,URI 可以透過讀取訊息內容中的某個屬性來設定。
如果佇列中沒有任何訊息符合比對選項,便會傳回虛擬訊息。
因為這個範例使用的是動態傳送埠,所以可能必須指定其他選項,例如重試和交易。 將訊息傳送到動態請求-回應連接埠之前,請先使用配接器所公開的內容屬性來設定這些選項。
您可以使用 MQSAdapterAdmin2 介面,動態建立和刪除 MQSeries 佇列。 如需如何動態建立 MQSeries 佇列的範例,請參閱 中的 https://go.microsoft.com/fwlink/?LinkId=89400 「佇列管理支援」。