私は 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 に強制的にキューを消去させたり、その内容をオンデマンドでフラッシュさせたりする方法はありますか? そのようなソリューションに Camel を使用するより良い方法はありますか?
乾杯!