Claus Ibsen created CAMEL-17038:
-----------------------------------

             Summary: camel-core - EIPs with thread pools vs reactive engine
                 Key: CAMEL-17038
                 URL: https://issues.apache.org/jira/browse/CAMEL-17038
             Project: Camel
          Issue Type: Improvement
          Components: camel-core
            Reporter: Claus Ibsen
            Assignee: Claus Ibsen
             Fix For: 3.13.0


EIPs that support thread pools for parallel processing such as splitter, 
wire-tap etc uses a JDK thread pool. The default sized thread pool in Camel has 
a backlog of 1000 slots, so the pools has capacity to process tasks as they 
come.

And in case a pool is full then they by default allows to steal the caller 
thread to run the task.

However this model has some flaws now

a) The EIPs are going parallel and then the task is executed on current thread 
via caller runs (blocking)
b) The other rejections discard, discard oldest, (abort) will cause problems as 
the task has an exchange callback that should be called to continue that 
inflight exchange

For (a) it adds complexity and we have a bug such as CAMEL-16829

For EIPs then we should consider not allowing custom rejections, and only have 
a default behaviour that is if a task is rejected then the exchange fails. Or 
we can add a strategy that will block (with timeout) until a slot is free.





--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to