Search This Blog

Your place for free Visual Studio, .NET and BizTalk articles, code snippets, discussions, news and the best bunch of developers on the net.

Monday, June 18, 2007

Processing Interchanges in BizTalk Server 2006

In BizTalk terms, an interchange refers to a message being processed by BizTalk Server. When an interchange contains two or more documents—which is typical when receiving a batch—BizTalk parses the interchange, which results in multiple messages. How these messages are handled depends on the type of interchange processing selected on the pipeline. With BizTalk Server 2006, a developer can select to use standard interchange processing or recoverable interchange processing when developing a custom pipeline.

Standard Interchange

When an interchange arrives at a receive location the configured pipeline will decompose the interchange into one or more messages. Messages are then individually validated by the pipeline but then collected within the EPM (End-point Manager) inside BizTalk. If at any time any message within the collection fails, the entire interchange will be suspended. The suspended message will appear as the complete interchange, not the separate parts.

Recoverable Interchange

When a new interchange arrives, and this option is selected on the active pipeline, it is broken down into individual messages and passed through the pipeline for disassembly and validation. When an interchange with bad documents is processed in recoverable mode, the bad documents will not cause a pipeline failure. Instead, they are marked as “messages to be suspended”. After the individual messages have been processed by the pipeline, the end point manager submits all the messages to the Message Box in a single transaction: good messages go to the work queue and bad messages go to the suspended queue.

Failed Message Routing

When a new receive port is created, a property can be set called "Generate error report for failed message". When this property is checked, failed messages will not be suspended. Instead, they will be sent to the message box, and the following additional properties will be set:
1. ErrorReport.ErrorType
2. ErrorReport.FailureCode
3. ErrorReport.MessageType
4. ReceivePortName
5. SendPortName
6. InboundTransportLocation
7. OutboundTransportLocation

By taking advantage of these additional context properties you can now create end-point filters, on an orchestration or sent port, that subscribe to these failed messages.

Microsoft has written a very good document, explaining processing interchanges in detail with example. Click here to download

1 comment:

Udayan said...

How does BizTalk server compare with other SOA tools?