【发布时间】:2014-03-11 15:39:44
【问题描述】:
我创建了创建消息的自定义管道组件 Disassembler,如下所示:
public void ComposeMessage(Stream processingStream,
Microsoft.BizTalk.Component.Interop.IPipelineContext pc,
Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg,
Queue msgs
)
{
IBaseMessage outMsg = pc.GetMessageFactory().CreateMessage();
outMsg.AddPart("Body", pc.GetMessageFactory().CreateMessagePart(), true);
outMsg.Context = inmsg.Context;
processingStream.Seek(0, SeekOrigin.Begin);
outMsg.GetPart("Body").Data = processingStream;
msgs.Enqueue(outMsg);
}
创建的消息正在保存到文件中。
而且效果很好,但是当反汇编程序出错并且从“BizTalk Server 管理控制台”恢复消息时 它陷入无限循环并产生大量文件直到终止。
我将 Debug.Write 添加到我的代码中,并且我看到该 Disassemble 方法在恢复消息时被多次调用。
这对 Biztalk 来说正常吗?有没有办法改变,所以 Disassemble 方法会像正常处理一样被调用一次?
【问题讨论】:
-
究竟什么是无限循环?您的代码或消息正在不断重新提交。
-
从我看到的标准“反汇编”函数(包含我的代码)被循环调用(由 Biztalk 管道?)。但仅适用于暂停+恢复的消息。
标签: biztalk