【发布时间】:2020-10-13 08:25:43
【问题描述】:
我正在使用 BizTalk Server 2013。我在反汇编阶段有一个自定义接收管道组件。该组件根据“位置”节点将输入 xml 消息分解为单独的消息。例如,如果输入消息有 3 个位置,那么它将被分解为 3 条消息,每个位置一条消息。输入消息还可以具有二进制数组形式的附件。自定义管道组件实现 IDisassemblerComponent。
对于每个位置,都会像这样创建一条新消息 -
outMsg = pContext.GetMessageFactory().CreateMessage();
在编排中,消息 Id 是这样检索的 - messageId = myMsg(BTS.MessageID);
业务逻辑依赖于 messageId 将请求标记为已处理。
问题 - 当输入请求没有任何附件时,outMsg.MessageID 和 myMsg(BTS.MessageID) 匹配,因此,业务逻辑有效并且请求被标记为完成。但是,如果输入请求有附件,则 outMsg.MessageID 和 myMsg(BTS.MessageID) 是不同的,业务逻辑会暂停该请求。我使用了一个 1 MB 的附件来重现这个问题。
我尝试通过在管道组件中提升 outMsg.MessageID 并在编排中使用它而不是 myMsg(BTS.MessageID) 来解决此问题。 但是,我不确定这是否是正确的方法,并希望找出并解决根本原因。
为什么 outMsg.MessageID 和 myMsg(BTS.MessageID) 匹配无附件而请求有附件时不同?
【问题讨论】:
标签: biztalk biztalk-2013 biztalk-pipelines