【发布时间】:2019-09-24 22:50:04
【问题描述】:
我尝试使用 ActiveMQ 组件(在 Spring-Boot 内),但结果有些奇怪 结果。
1- 我从 SEDA 向 destinationQueue 发送了 2000 条消息
我是这样做的:
from("file:G:/highlight").to("seda:warehouse");
// took less than a millisecond to complete
from("seda:warehouse?concurrentConsumers=20").to("activemq:queue:destinationQueue")
// Completion time : 58 seconds
Completion time : 58 seconds
2- 现在我尝试使用来自destinationQueue 的这些文件
这就是我要这样做的方式:
from("activemq:queue:line1").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
System.out.println(exchange.getIn().getBody(String.class));
}
});
// The completion time : around 1 second!
The completion time : around 1 second!
所以我的问题是:
1- 为什么我将文件发送到队列时速度很慢?但我可以消费那些 消息如此之快(在这个测试中,它快了 50 倍以上)!!!
- 我确实在笔记本电脑上消费和生产。
任何帮助将不胜感激:))
【问题讨论】:
-
恕我直言:当您向 ActiveMQ 队列发送消息时,会将它们放入数据库中。数据库位于您的硬盘驱动器上(瓶颈)。从数据库读取比写入要快。当然你也可以使用 ActiveMQ 的设置
-
疯狂猜测(略有不同):基于磁盘的源(文件(...))与内存读取。使用 System.out.println 处理器检查 from("file...") 需要多长时间。
标签: java apache-camel activemq