【发布时间】:2018-10-17 11:16:17
【问题描述】:
我对 Apache Camel 还很陌生,并试图将一些路线付诸实践。 我有一个 TCP 服务器,它提供大型 JSON 消息(大小高达 ~30-50kB,我无法控制源大小),其中包含大量测量数据,我想使用某些有效的附加路由来处理这些数据美好的。 我在 spring-boot 环境 1.5.7 中使用骆驼 2.20。 我遇到的问题是,如果我注释掉除传入的简化 netty4 路由(仅来自和到计数器)之外的所有其他路由,请参见下文
@Bean
public RouteBuilder getRoute() {
String fromSource = String.format("netty4:tcp://%s:%d?clientMode=true&textline=true&receiveBufferSize=64000&decoderMaxLineLength=64000",sourceIp,sourcePort);
return new RouteBuilder() {
from(fromSource)
.to("metrics:counter:incomingCounter");
};
}
该路由几乎可以正常工作,但消耗越来越多的堆空间(大约每秒 2MB,其中有消息以大约 20-30Hz 的频率提供服务),直到 java 抛出 java.lang.OutOfMemoryError: Java heap space。
没有任何路由没有注册内存泄漏,因为我可以将问题集中在 netty-route
任何帮助将不胜感激。 提前致谢。
【问题讨论】:
标签: java spring memory-leaks apache-camel netty