我正在使用Camel 2.10的RedHat Fuse Service Works中的Camel路线。
我想知道以下实现之间的区别:
1 /使用SEDA路线
from("A")
.split(body())
.to("seda:B");
from("seda:B?concurrentConsumers=4")
.routeId("MySEDATestRoute")
.to("C")
.end();
2 /使用并行处理
from("A")
.split(body())
.parallelProcessing()
.to("C");
3 /使用线程
from("A")
.split(body())
.threads()
.to("C");
从我所见,方法3(线程)允许配置线程池大小,它看起来与" concurrentConsumers"解决方案1(SEDA)。
如果我没有将任何参数传递给方法线程,方法2和3的行为是否相同?
提前致谢,
此致
答案 0 :(得分:1)
您可以在1),3)中设置线程编号,但1)仍然可以从其他路径接收来自(xxx).to(" seda:B")的消息。 2)您需要设置ExecutorService(或ThreadPool),否则parallelProcessing将无法正常工作。
答案 1 :(得分:0)
以下是工作示例代码:
CamelContext context = getContext();
ExecutorService service = new ThreadPoolBuilder(context).poolSize(10).maxPoolSize(150).maxQueueSize(150).build("CustomPool");
from("properties:{{file.fromLocation}}")
.log("Received the file...")
.split().tokenize("\n").executorService(service)
.streaming()
.parallelProcessing()