Простой способ достижения высокой пропускной способности (большие сообщения и / или большое количество сообщений) - запустить входящее сообщение через карту в принимающем порту, который использует пользовательский XSLT. Эта карта затем сгруппирует XML в группы правильного размера - после отображения XML может выглядеть примерно так:
<ns0:sample xmlns:ns0='http://MGSIBREDemo.LoanRequest' xmlns:ns1='http://MGSIBREDemo.LoanRequestGroup'>
<ns1:group>
<data1><name>name1</name></data1>
<data1><name>name2</name></data1>
<data1><name>name3</name></data1>
<data1><name>name4</name></data1>
</ns1:group>
<ns1:group>
<data1><name>name5</name></data1>
<data1><name>name6</name></data1>
<data1><name>name7</name></data1>
<data1><name>name8</name></data1>
</ns1:group>
<ns1:group>
<data1><name>name9</name></data1>
<data1><name>name10</name></data1>
</ns1:group>
</ns0:sample>
После этого первого шага вам нужно будет отправить сообщение из BizTalk и получить его снова. Затем вы можете использовать обычный конвейерный компонент XML disasebler для отладки сообщения (как, например, описано здесь ).
Большим преимуществом этого метода является то, что вы будете использовать карту BizTalk в порту для преобразования сообщения и готового компонента конвейера. Оба из них обрабатывают сообщения в потоковом режиме, и вы сможете обрабатывать как большие сообщения, так и большое количество сообщений.
Недостаток заключается в том, что производительность снижается при записи сообщения на диск или в очередь для последующего их чтения.
Было бы замечательно, если бы была возможность выполнить отладку на стороне отправки с использованием ассемблера XML, но сегодня это невозможно.
Так что, если вы не в порядке с чтением всех сообщений в память (используя XmlDocument) или тратите время на написание собственного потокового Xml-дизассемблера, это «хак», с которым мы застряли.