2013-11-14 3 views
0

В настоящее время мы пытаемся обрабатывать довольно большой файл через наш BizTalk-процесс и постоянно обрабатываем OutOfMemoryExceptions при обработке. У меня есть пользовательский дизассемблер, который обрабатывает каждую запись по отдельности, чтобы не читать все сообщение в памяти. В настоящее время среда находится в dev, поэтому SQL и BizTalk работают на одном компьютере. Аппарат имеет 16 Гб памяти, но BizTalk - это только 32-битная архитектура.Обработка (~ 200 МБ) файлов в BizTalk

Есть ли какие-либо настройки хоста, которые я могу изменить, чтобы разрешить обработку файла от начала до конца?

ответ

2

По какой-либо причине вы не можете запустить 64-битный BizTalk? Есть настройки хоста, с которыми вы можете играть, но они связаны с Throttling. Исключение OutOfMemoryException - это трудная ошибка, которой BizTalk практически не контролирует.

То, что вы описываете, определенно выполнимо. Я сделал это.

Сначала изучите основы своего компонента. Являются ли ваши экземпляры сообщений надлежащим образом отменены и все?

Как вы отправляете сообщение в MessageBox? Если это через обычный дизассемблерный API, тогда их сообщения будут сидеть в памяти некоторое время. Использование VirtualStream может помочь в этом.

+0

Я попробую. Я думаю, что проблема может заключаться в оркестровке. – newtonrd

+0

@newtonrd Избегайте, во что бы то ни стало, использовать выражения xpath в вашей оркестровке. Кроме того, есть ли возможность отладки входящего файла на более мелкие куски? Подход схемы схемы может быть идеальным для вас вместе с шаблоном «разброс и сбор». –

+0

@PieterVandenheede Да, есть. Пользовательский дизассемблер дезактивирует входящий файл на более мелкие куски, поэтому в память одновременно загружается только одна запись. – newtonrd

Смежные вопросы