IIB 消息流中是否有 "streaming" 到 HTTP 回复节点的技术?

Is there a technique for "streaming" to an HTTP Reply Node in an IIB message flow?

我是新手,我的 IIB 消息流如下所示:

HTTP 输入节点 -> 文件读取节点 -> HTTP 回复节点。

(1) HTTP 输入节点 - 流程由发起 https 请求的用户启动。 (2) File Read Node - 消息流从我们的ftp服务器获取一个文件(本地文件目录,文件名,sftp主机和凭证,sftp服务器目录全部临时硬编码只是为了便于对解决方案进行故障排除,但在现实生活中,此信息会从 http 请求中提取)。 (3) HTTP 回复节点 - 使用从 ftp 服务器检索到的文件内容回复用户。

问题是这样的:当文件读取节点读取大文件时,消息流导致 "java/lang/OutOfMemoryError" 堆转储(我已经通过 运行 消息流的多个实例进行了测试124 MG 文件)。

背景:这是在 IIB 中重写的遗留 ASP/VBScript 应用程序。不是我的。但我的任务是修复内存错误。

更多信息:通过阅读,我明白了为什么提交的内存都用完了。我已经阅读了所有关于大消息处理的内容,但是因为这个应用程序的主要目的是允许用户通过 ** https ** 从我们的 ftp 服务器获取文件,我似乎被绑定到那个 HTTP 回复节点因此,当流到达 HTTP 回复节点的 "in" 终端时,整个文件必须在 MBMessageAssembly 对象中可用(因此在内存中)。

我的问题是:是否有"streaming" 到HTTP 回复节点的技术?或者,是否可以完全删除 HTTP 回复节点并在 Java 计算节点中执行 SFTP HTTP 回复(我不能使用计算 Node/ESQL 因为我们没有获得许可)?或者,还有其他想法吗?

很好的问题陈述,感谢您在发布问题之前进行的跑腿工作。 这里的根本问题是 IIB 是为处理消息而不是(大)文件而设计的。您可以尝试增加所有

的堆大小
  • HTTP 侦听器(代理范围或特定于 EG,务必调整正确的)。
  • 执行组
  • JVM。

请注意,IIB 不会将消息树本身存储在 JVM 堆中,即使您使用 JavaCompute 节点来操作它也是如此。但是FileRead节点使用了JVM,显然需要更多的Java堆。