gpt4 book ai didi

java - Mirth 文件读取器 - Java 堆空间错误

转载 作者:行者123 更新时间:2023-12-02 11:18:18 37 4
gpt4 key购买 nike

我正在使用 Mirth Connect v3.5.2.b204 读取大型逗号分隔值 (147mb) 文件,以将行转换为 HL7 v2.4 消息。

来源:我配置了一个文件读取器连接器类型,该连接器从包含 .csv 文件的目录中提取记录。处理后的文件应移动到已处理的文件目录。

目的地:连接器类型指向 TCP 发送器,其中将转换后的 .csv 记录推送到 HL7 消息。

问题:即使在处理完最后一条记录(编号 700k)后,Mirth 似乎仍在继续读取该文件。因此,接收到的记录计数不断增加并重新发送已处理的消息。请注意,较小的文件(例如, 40MB

分辨率:我停止了 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)

最佳答案

您可能想研究使用批处理。您可以通过在源设置上将“处理批处理”设置为"is"来启用它。

这将导致 channel 将 CSV 中的每条记录作为单独的消息读取,一次一条。使用文件读取器时,这也意味着整个文件将不会一次全部读入内存。

关于java - Mirth 文件读取器 - Java 堆空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50113489/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com