Reputation: 93
I am working on Camel routes in RedHat Fuse Service Works which has Camel 2.10.
I would like to know the differences between the following implementations:
1/ using SEDA routes
from("A")
.split(body())
.to("seda:B");
from("seda:B?concurrentConsumers=4")
.routeId("MySEDATestRoute")
.to("C")
.end();
2/ using parallel processing
from("A")
.split(body())
.parallelProcessing()
.to("C");
3/ using threads
from("A")
.split(body())
.threads()
.to("C");
From what I've seen the method 3 (threads) allows to configure the thread pool size which seems the same as "concurrentConsumers" of solution 1 (SEDA).
If I don't pass any parameters to the method thread will the behavior of methods 2 and 3 be the same ?
Thanks in advance,
Regards
Upvotes: 8
Views: 14011
Reputation: 76
Below is the working sample code :
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()
Upvotes: -1
Reputation: 3291
You can setup the thread number in 1), 3), but 1) can still receive the message from other route which just like from(xxx).to("seda:B"). 2) You need to setup the ExecutorService (or ThreadPool), otherwise the parallelProcessing won't work as you want.
Upvotes: 4