java - 如何在Camel中使用**直接**端点实现并行处理?

标签 java parallel-processing apache-camel

下面的测试代码不起作用

from("direct:start").setExchangePattern(ExchangePattern.InOnly).threads(5).delay(2000).bean(MessageHeaderValidator.class);

尽管seda是替代方案,请参阅Camel seda document 。建议改用直接端点。

线程池

请注意,通过执行以下操作将线程池添加到 SEDA 端点:

from("seda:stageName").thread(5).process(...)

最终可能会出现两个 BlockQueue:一个来自 SEDA 端点,一个来自线程池的工作队列,这可能不是您想要的。相反,您可能希望使用线程池配置 Direct 端点,它可以同步和异步处理消息。例如:

from("direct:stageName").thread(5).process(...) 

您还可以直接配置在 SEDA 端点上处理消息的线程数 使用并发消费者选项。

最佳答案

对于并行处理,请使用 Camel 的 SEDA 组件和 concurrentConsumers 选项:

from("seda:stageName?concurrentConsumers=5")
    .process(...);

关于java - 如何在Camel中使用**直接**端点实现并行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926805/

相关文章:

java - redis 批量增量更新

Collapse 子句在#pragma omp for 中被忽略

Python 中的 C# Parallel.Foreach 等价物

c# - 是否可以并行下载和解压?

java - 如何在 Camel 中路由使用 SOAP Web 服务的端点链?

java - 在 postgres 上运行 JDBC 时出错

java - 如何将数组转换为 ListIterator?

java - 在 apache Camel 中使用 xpath 从 xml 获取值

java - 如何在 JFrame 中渲染一个面板

java - 了解 Camel 的输入/输出交换模式行为