首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Apache Camel、Netty4端点作为客户端内存泄漏

Apache Camel、Netty4端点作为客户端内存泄漏
EN

Stack Overflow用户
提问于 2018-10-17 11:16:17
回答 1查看 260关注 0票数 0

我是Apache Camel的新手,正在尝试将一些路线付诸实践。我有一个TCP服务器,它服务大型JSON消息(大小可达~30-50kB,我无法控制源大小),其中包含大量测量数据,我希望使用某些工作正常的附加路由来处理这些数据。我在spring-boot环境1.5.7中使用camel 2.20。我遇到的问题是,如果我注释掉除传入的简化netty4路由(仅从计数器和到计数器)之外的所有其他路由,请参见下面的内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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-30 of的频率提供服务),直到java抛出java.lang.OutOfMemoryError: Java heap space。

如果没有任何路由,则没有记录内存泄漏,因为我可以将问题集中在netty-route上

任何帮助都将不胜感激。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-10-18 11:43:20

我自己通过调试代码找到了解决方案。我忘了在netty4-camel端点中设置属性sync=false,因为我不想处理消息并在处理后向服务器发回一个答案,只是消耗-而sync=true (默认设置)缓冲所有传入的数据以供稍后响应,这导致了我的“内存泄漏”。“同步”的行为在netty4-camel文档(http://camel.apache.org/netty4.html)中并不完全清楚-我将建议改进文档(将写一封带有提案的邮件),以使用法更清楚一些。

也许这对另一个有类似问题的人有帮助。

最好的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52853590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文