Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

flow-ref and processing strategy

Tags:

Can someone pls explain how a Mule processing strategy works when one flow is calling another one with flow-ref?

Case 1.
Let's say we have 2 flows: flowA and flowB, with processing strategies procA and procB, both are asynchronous but procA has 10 threads allowed while procB has only 1.

<queued-asynchronous-processing-strategy name="procA" maxThreads="10" doc:name="procA"/>
<queued-asynchronous-processing-strategy name="procB" maxThreads="1" doc:name="procB"/>

flowA is reading from a queue and calling flowB with

<flow-ref name="flowB" doc:name="flowB"/>

Will be another queue created in this case between the flowA and flowB so that all the flowB calls executed in a single thread one by one?
Or flowB will be following the flowA strategy with possible 10 messages processed at the same time?

Case 2.

flowA is a synchronous flow reading from a queue. It's calling an asynchronous flowB with 1 max thread allowed like this:

<queued-asynchronous-processing-strategy name="procB" maxThreads="1" doc:name="procB"/>

The async block has it's own strategy procC with 10 threads allowed:

<queued-asynchronous-processing-strategy name="procC" maxThreads="10" doc:name="procC"/>  

flowA is calling flowB like this:

<async doc:name="Async" processingStrategy="procC">
<flow-ref name="flowB" doc:name="flowB"/>
</async>

The question is similar:
Will be another queue created in this case between the async block and flowB so that all the flowB calls executed in a single thread one by one?
Or flowB will be following the procC strategy with 10 messages processed at the same time?

like image 427
spoonboy Avatar asked Dec 22 '16 07:12

spoonboy


1 Answers

Case 1.

Another queue with 1 thread will be created for Flow B.

VM receiver pool thread-> SEDA thread from procA -> SEDA thread from procB

Case 2.

As above, another queue with 1 thread will be created for Flow B

VM Receiver pool thread -> SEDA thread from procC -> SEDA thread from procB

Flow processing strategies are covered in the Mule documentation but I didn't find that overly useful. It is straightforward to set these flows up in Anypoint Studio and use Loggers to determine the thread that is running at a particular time.

like image 183
Clinton Murdoch Avatar answered Sep 24 '22 16:09

Clinton Murdoch