최대 발생은 수신 메시지의 메시지를 평가하기 위해 사용되며 출력 메시지에 포함되어야하는 레코드 수를 결정하는 데 사용되지 않습니다. 따라서 들어오는 파일을 일괄 적으로 읽는 사용자 지정 플랫 파일 디스어셈블러 구성 요소를 만들어야합니다. 스트림에서 일부 데이터를 읽고 (예 : 줄 수에 따라) 전달합니다.
GetNext 메서드가 대용량 파일의 데이터를 읽는 방법에 문제가있어 과도한 메모리 사용을 초래할 수 있습니다 (약 800,000 개의 항목이 포함 된 10MB 파일에서 발생하는 시나리오가 있음). 따라서 모든 메시지 당 특정 수의 레코드를 출력하는 시나리오를 처리하고 동시에 더 큰 메시지를 처리하는 데 더 효율적이되도록 GetNext 메서드를 다시 구현해야합니다. 처리시
가
private IBaseMessage GetNext2(IPipelineContext pc)
{
...
baseMessage = this.CreateOutputMessage(pc);
...
baseMessage = this.CreateOutputMessage(pc);
...
return baseMessage;
}
은 "CreateOutputMessage"방법은 문제가 놓여 것 인 "CreateNonrecoverableOutputMessage"메소드를 호출 끝낸다 : 여기
원래 GETNEXT (중요한 부분) 방법의 일부 디 컴파일 코드 큰 메시지 :
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
을