我使用Mirth v3.5.2.b204读取大号逗号分隔值(147 am )文件,将行转换为HL7 v2.4消息。
源:我已经配置了一个文件读取器连接器类型,它从包含.csv文件的目录中提取记录。处理后,应将文件移到已处理的文件目录中。
目标:连接器类型指向type,其中将转换的.csv记录推送到HL7消息。
问题:即使文件在处理完最后一个记录(编号700 k)之后,Mirth似乎仍在继续读取该文件。因此,“接收”下的记录计数不断增加,并重新发送已处理的消息。请注意,这个通道问题没有发生在较小的文件上,例如40 on。
解决方案:我停止了mirth服务,从源文件夹中删除了.csv并重新启动了mirth服务。由于文件读取器没有文件可读取,因此所截获的计数有所增加,转换处理仍在继续。
查询: 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)发布于 2018-05-01 16:39:53
您可能需要研究如何使用批处理。您可以通过在源设置上将Process设置为Yes来启用它。
这将导致通道从CSV中读取每条记录,作为一个单独的消息,每次一个。当使用文件读取器时,这也意味着整个文件将被同时读入内存,而不是。
https://stackoverflow.com/questions/50113489
复制相似问题