【发布时间】:2019-11-01 20:02:11
【问题描述】:
我是新手,我的 IIB 消息流如下所示:
HTTP 输入节点 -> 文件读取节点 -> HTTP 回复节点。
(1) HTTP 输入节点 - 流程由用户发起 https 请求启动。 (2) 文件读取节点 - 消息流从我们的 ftp 服务器获取文件(本地文件目录、文件名、sftp 主机和凭据以及 sftp 服务器目录都临时硬编码,只是为了便于解决解决方案,但在现实生活中此信息将从http请求中提取)。 (3) HTTP 回复节点 - 使用从 ftp 服务器检索到的文件内容回复用户。
问题是这样的:当文件读取节点读取大文件时,消息流会导致“java/lang/OutOfMemoryError”堆转储(我一直在使用 124 MG 文件运行多个消息流实例进行测试) .
背景:这是在 IIB 中重写的旧版 ASP/VBScript 应用程序。不是我。但我的任务是修复内存错误。
更多信息:通过阅读,我明白为什么提交的内存会全部用完。我已经阅读了有关大型消息处理的所有内容,但是因为该应用程序的主要目的是允许用户通过 ** https ** 从我们的 ftp 服务器获取文件,所以我似乎与那个 HTTP 回复节点相关联,因此整个当流到达 HTTP 回复节点的“in”终端时,文件必须在 MBMessageAssembly 对象中可用(因此在内存中)。
我的问题是:是否有“流式传输”到 HTTP 回复节点的技术?或者,是否可以完全删除 HTTP 回复节点并在 Java 计算节点中执行 SFTP 和 HTTP 回复(我不能使用计算节点/ESQL,因为我们没有获得许可那)?或者,还有其他想法吗?
【问题讨论】: