我创建了自定义管道组件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 ,我发现反汇编方法在恢复的消息上被调用了很多时间。
Biztalk这是正常的吗?有没有办法改变,所以Disassemble方法会像正常处理一样被调用一次?
答案 0 :(得分:4)
如果在管道组件中抛出异常,则需要使用catch块中的其余输入流。我认为它正在尝试将剩余的未读数据流处理为更多消息。