When you use a custom Messaging Port "encoding" component with Microsoft BizTalk Server, you may notice that documents are both transmitted and sent to the Suspended Queue.
Note This problem only occurs when you use non-transactional transports, such as HTTP/HTTPS, File, and SMTP.
↑ Back to the top
This problem occurs because your custom encoding component stops the transaction that BizTalk Server uses for the specific interchange without raising an error, and BizTalk Server transmits the document before it checks the status of the transaction.
↑ Back to the top
To work around this problem, develop the encoding component so that it raises an error when it stops the transaction. As a result, BizTalk Server catches the error that is raised and does not transmit the data.
↑ Back to the top
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.
↑ Back to the top
BizTalk Server provides the ability to write a Pipeline Component and use it during the encoding stage of an Interchange process. The encoding stage occurs after document serialization and before document transmission. When your custom component runs, it participates in the transaction that BizTalk Server creates. If an error occurs from within, the component can stop that transaction.
However, if the component stops the transaction, BizTalk Server still attempts to transmit the data. As a result, the data is still sent on non-transactional transports (such as HTTP/HTTPS, File, SMTP). After the transmission, BizTalk Server recognizes that the transaction has been stopped and moves the data to the suspended queue. Therefore, the data is duplicated. If you resubmit the data from the Suspended Queue, the document is delivered twice.
↑ Back to the top