自定义反汇编程序的恢复消息属于无限循环

时间:2014-03-11 15:39:44

标签: biztalk

我创建了自定义管道组件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方法会像正常处理一样被调用一次?

1 个答案:

答案 0 :(得分:4)

如果在管道组件中抛出异常,则需要使用catch块中的其余输入流。我认为它正在尝试将剩余的未读数据流处理为更多消息。