user3416249
user3416249

Reputation: 93

Camel parallel processing options

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

Answers (2)

Bharath B
Bharath B

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

Willem Jiang
Willem Jiang

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

Related Questions