Программа чтения файлов Mirth - ошибка пространства кучи Java - PullRequest
0 голосов
/ 01 мая 2018

Я использую Mirth Connect v3.5.2.b204 для чтения большого файла с разделенными запятыми значениями (147 МБ) для преобразования строк в сообщения HL7 v2.4.

Источник: Я настроил тип коннектора для чтения файлов, который извлекает записи из каталога, содержащего файл .csv. После обработки файл должен быть перемещен в каталог обработанных файлов.

Пункт назначения: Тип соединителя указывает на отправителя TCP, куда передаются преобразованные записи .csv в сообщения HL7.

Выпуск: Кажется, что Mirth продолжает читать файл даже после того, как он завершил обработку последней записи (номер 700k). Следовательно, количество полученных записей продолжает увеличиваться и повторно отправлять уже обработанные сообщения. Обратите внимание, что эта проблема с каналом не возникла в небольших файлах, например 40MB

Разрешение: Я остановил службу веселья, удалил .csv из исходной папки и перезапустил службу веселья. Поскольку у программы чтения файлов не было файла для чтения, использовалось увеличение счетчика, и обработка преобразования продолжалась.

Запросы: 1. Что означает эта ошибка? 2. Являются ли конвертированные сообщения жизнеспособными? просматривая примеры, преобразование строки .csv в HL7 выполняет правильное форматирование.

Сообщение об ошибке из журналов Mirth:

ERROR 2018-04-30 16:32:07,581 [File Reader Polling Thread on data import (342c3cbc-433b-4965-8323-c2aebff38765) < 342c3cbc-433b-4965-8323-c2aebff38765_Worker-1] com.mirth.connect.connectors.file.FileReceiver: Error reading file D:\Mirth_source\Full Data 2 2018_04_27.txt
Java heap space
ERROR 2018-04-30 16:32:07,604 [File Reader Polling Thread on Patient import (342c3cbc-433b-4965-8323-c2aebff38765) < 342c3cbc-433b-4965-8323-c2aebff38765_Worker-1] com.mirth.connect.connectors.file.FileReceiver: Error processing file in channel: 342c3cbc-433b-4965-8323-c2aebff38765
com.mirth.connect.connectors.file.FileConnectorException: Error reading file D:\Mirth_source\Full Data 2 2018_04_27.txt
Java heap space
    at com.mirth.connect.connectors.file.FileReceiver.processFile(FileReceiver.java:371)
    at com.mirth.connect.connectors.file.FileReceiver.processFiles(FileReceiver.java:247)
    at com.mirth.connect.connectors.file.FileReceiver.poll(FileReceiver.java:203)
    at com.mirth.connect.donkey.server.channel.PollConnectorJob.execute(PollConnectorJob.java:49)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Caused by: java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
    at java.lang.AbstractStringBuilder.append(Unknown Source)
    at java.lang.StringBuilder.append(Unknown Source)
    at com.mirth.connect.plugins.datatypes.delimited.DelimitedReader.getChar(DelimitedReader.java:551)
    at com.mirth.connect.plugins.datatypes.delimited.DelimitedReader.getColumnValue(DelimitedReader.java:438)
    at com.mirth.connect.plugins.datatypes.delimited.DelimitedReader.getRecord(DelimitedReader.java:232)
    at com.mirth.connect.plugins.datatypes.delimited.DelimitedBatchAdaptor.getMessage(DelimitedBatchAdaptor.java:152)
    at com.mirth.connect.plugins.datatypes.delimited.DelimitedBatchAdaptor.getMessageFromReader(DelimitedBatchAdaptor.java:105)
    at com.mirth.connect.plugins.datatypes.delimited.DelimitedBatchAdaptor.getNextMessage(DelimitedBatchAdaptor.java:96)
    at com.mirth.connect.donkey.server.message.batch.BatchAdaptor.getMessage(BatchAdaptor.java:44)
    at com.mirth.connect.donkey.server.channel.SourceConnector.dispatchBatchMessage(SourceConnector.java:231)
    at com.mirth.connect.donkey.server.channel.SourceConnector.dispatchBatchMessage(SourceConnector.java:196)
    at com.mirth.connect.connectors.file.FileReceiver.processFile(FileReceiver.java:331)

1 Ответ

0 голосов
/ 01 мая 2018

Возможно, вы захотите изучить использование пакетной обработки. Вы можете включить его, установив Process Batch на Да в настройках источника.

Это заставит канал читать каждую запись из CSV как отдельное сообщение, по одному за раз. При использовании программы чтения файлов это также означает, что весь файл будет не считан в память сразу.

...