發生的最大值用於從傳入消息中刪除消息,而不是確定輸出消息中應該有多少條記錄。因此,您必須創建一個自定義平面文件反彙編程序組件,以批處理方式讀取傳入文件:從流中讀取一些數據(例如基於行數)並將其傳遞。
GetNext方法如何讀取較大文件中的數據似乎存在問題,這可能會導致內存使用量過大(我有一種情況發生在包含大約800 000個行項目的10Mb文件中)。因此,所有需要做的就是重新實現GetNext方法,以滿足您爲每條消息輸出一定數量記錄的情況,同時在處理更大的消息方面更加高效。
這裏原來的GetNext(重要部件)的方法的一部分,反編譯的代碼:
private IBaseMessage GetNext2(IPipelineContext pc)
{
...
baseMessage = this.CreateOutputMessage(pc);
...
baseMessage = this.CreateOutputMessage(pc);
...
return baseMessage;
}
的「CreateOutputMessage」方法結束調用「CreateNonrecoverableOutputMessage」方法,該方法是問題似乎在於處理時更大的消息:
internal IBaseMessage CreateNonrecoverableOutputMessage(IPipelineContext pc)
{
...
XmlReader reader1 = this.m_docspec.Parse(this.m_inputData);
...
return message;
}
的「m_inputData」變量創建調用「FFDasmComp.DataReaderFunction」代表傳遞到平面文件拆裝部件的構造。您可以通過將自己的數據讀取器方法傳遞到平面文件反彙編程序組件的自定義實現的構造函數中來控制數據的讀取。
有一對夫婦的文章在那裏,但給定的實現具有較大的消息打交道時,一些嚴重的警告:
Debatching Large Messages and Extending Flatfile Pipeline Disassembler Component in Biztalk 2006
Processing 10 MB Flat File in BizTalk