我是使用 Apache camel 的新手,但从我的各种测试中,我意识到使用 JMS 作为队列通道会造成内存泄漏,因为在每条消息消耗后使用的内存并没有减少。
一个简单的例子可以更好地描述它:
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
context.addComponent("experimental", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file://test").to("experimental:queue:test");
}
});
context.addRoutes(new RouteBuilder() {
public void configure() {
from("experimental:queue:test").to("stream:out");
}
});
Main main = new Main();
main.getCamelContexts().add(context);
main.run();
}
有什么方法可以强制 GC 清理队列或按需刷新其内容?有没有更好的方法来使用骆驼来解决这些问题?
干杯!