2016-12-22 3 views
5

Kann jemand pls erklären, wie eine Mule-Verarbeitungsstrategie funktioniert, wenn ein Flow einen anderen mit Flow-Ref aufruft?Flow-Ref und Verarbeitungsstrategie

Fall 1.
Lasst uns sagen, wir haben 2 fließt: Flowa und flowB, mit Verarbeitungsstrategien Proca und procB, beide sind asynchron aber Proca hat 10 erlaubt Fäden während procB nur 1.

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

Flowa wird aus einer Warteschlange zu lesen und flowB mit

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

Aufruf wird eine andere Warteschlange in diesem Fall zwischen dem Flowa und flowB erstellt werden, so dass alle der flowB exe ruft in einem einzigen Thread nacheinander geschnitten?
Oder FlowB folgt der FlowA-Strategie mit 10 möglichen gleichzeitig verarbeiteten Nachrichten?

Kasten 2.

Flowa ist ein synchroner Fluss aus einer Warteschlange zu lesen. Es ist ein asynchroner flowB mit 1 max Gewinde wie dies erlaubt Aufruf:

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

der Asynchron-Block hat seine eigene Strategie procc mit 10 Fäden erlaubt:

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

Flowa flowB wie dies ruft:

Die Frage ist ähnlich:
Wird eine andere Warteschlange in diesem Fall zwischen dem Async b erstellt werden Sperren und FlowB, so dass alle FlowB-Aufrufe nacheinander in einem Thread ausgeführt werden?
Oder FlowB wird die procC-Strategie mit 10 gleichzeitig verarbeiteten Nachrichten folgen?

Antwort

3

Kasten 1.

andere Warteschlange mit 1 Gewinde für

VM Empfängerpool Durchfluss B. Gewinde faden-> SEDA aus Proca erstellt wird -> SEDA Faden von procB

Fall 2.

Wie oben wird eine weitere Warteschlange mit 1 Thread für Fluss B

erstellt 10

VM Receiver Pool Thread -> SEDA Faden von procc -> SEDA Faden von procB

Schwallötverarbeitung Strategien sind in der Mule documentation bedeckt, aber das habe ich nicht allzu nützlich. Es ist einfach, diese Abläufe in Anypoint Studio einzurichten und Logger zu verwenden, um den Thread zu bestimmen, der zu einem bestimmten Zeitpunkt ausgeführt wird.