簡體   English   中英

BizTalk Orchestration 從雙向發送端口接收來自 XMLReceive 管道的多條消息?

[英]BizTalk Orchestration to receive multiple messages from XMLReceive pipeline from two-way send port?

我有一個帶有雙向發送端口的編排,可以從數據庫中檢索一個或多個項目。 我使用 WCF-SQL 適配器,並成功地將傳入的結果分批處理到單獨的 StoredProcedureResultSet0 消息中。 但是,編排只處理一條消息並結束。

接收編排有沒有辦法在結束之前循環返回的消息?

我現在收到的未處理消息的錯誤消息:

實例在未消耗其所有消息的情況下完成。 該實例及其未使用的消息已暫停。

我知道有些人已經開始使用編排中的管道進行分批。 我認為最好在盡可能靠近源的地方進行分批。

想法?

您必須有一個相關集,其中第一個接收形狀初始化相關集,然后您在循環中有一個接收,並帶有跟隨相關集的接收。 棘手的部分將是確定您可以關聯的內容以及循環的退出條件。 這就是為什么在編排中使用管道或映射來分批通常更容易的原因。

最終的解決方案是直接在接收管道中進行分批。 在編排中使用 XPath 存在性能風險,並且使用相關集(如@Dijkgraaf 回答)也存在風險。

但是,嘗試實施選擇的解決方案時,我遇到了以下問題:

如果存儲過程未返回任何結果,則 XMLReceive 管道無法分批消息。 這是因為如果沒有返回行,WCF-SQL 適配器會忽略結果元素,並且去批處理(Body XPath)需要它存在。 Also, tried to have the Body XPath to work even if there was no results using XPath function count(), but BizTalk does not allow "complex" XPath expressions (given by error message, no reference found).

因此,我必須開發一個接收解碼自定義管道組件來添加缺少的元素。 然后 XML Disassmebler 工作並使用消息,即使元素為空。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM