我已经构建了从网络接收网页并执行 HTML 深度处理的重线程应用程序。基本上我所有的线程都由许多网络绑定操作和 CPU 绑定操作组成。我在单独的线程中运行它们(因此我实现了大多数 IO/CPU 利用率)。
由于要处理数百万个 URL,我无法运行 seda: 因为对于 Camel 2.3,它的大小默认情况下是无限的,有时我会耗尽内存。我可以严格限制 seda 队列的大小,但我决定不这样做,而是使用 JMS 队列。
在相同数量的线程上,我看到使用 jprofiler8 的线程遥测的不同结果。请检查差异:
谁能解释我为什么在使用 seda 时我的 IO 利用率要好得多:与 jms 相比:队列?