gpt4 book ai didi

apache-camel - jms : queues vs seda: in Apache Camel

转载 作者:行者123 更新时间:2023-12-03 11:11:00 27 4
gpt4 key购买 nike

我构建了重线程应用程序,它从网络接收网页并执行 HTML 的深度处理。基本上我所有的线程都包含许多网络绑定(bind)操作和 CPU 绑定(bind)操作。我在单独的线程中运行它们(因此我实现了大部分 IO/CPU 利用率)。

由于有数百万个 URL 需要处理,我无法运行 seda:因为对于 Camel 2.3,它的大小默认是无限的,有时我会耗尽内存。我可以严格限制 seda 队列的大小,但我决定不这样做,而是使用 JMS 队列。

在相同数量的线程上,我看到使用 jprofiler8 的线程遥测的不同结果。请检查差异:

enter image description here

谁能解释一下为什么我在使用 seda: queues 时比 jms: ones 有更好的 IO 利用率?

最佳答案

你的场景有点不清楚。

SEDA 只是一个包装器,用于从 BlockingQueue 中入列/出列交换.全部在内存中,在 VM 操作中。

JMS 队列只是对某些 MOM 服务器实现(Apache ActiveMQ、Apache Qpid 或 IBM WebSphere MQ 等)的 API 抽象。然而,由于 JMS 队列被构建为通过基于 TCP/IP 的有线协议(protocol)与事务、持久性以及诸如选择器之类的复杂特性一起使用——运行时服务器资源的特征当然与 SEDA 实现不同。确切的方式和原因在很大程度上取决于各种选项和您使用的特定 JMS 产品以及许多其他难以预测的因素。

我建议您将您的 Camel 库更新到更高版本,您可以在其中控制 SEDA 队列大小并在满时阻止生产者。

关于apache-camel - jms : queues vs seda: in Apache Camel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com