# Parallel execution with Scatter-Gather

*MuleSoft Developer II Study Guide · Implement performant and reliable Mule applications · Last updated November 7, 2026 · https://www.certifyforce.com/study-guide/mulesoft-developer-ii/implement-performant-and-reliable-mule-applications/parallel-execution-with-scatter-gather*

Model Scatter-Gather route scheduling, per-route timeout and nested results, while preserving transaction constraints and interpreting aggregated diagnostics correctly.

- Certification: Salesforce MuleSoft Developer II
- Exam section: Implement performant and reliable Mule applications
- Study guide: https://www.certifyforce.com/study-guide/mulesoft-developer-ii

**Official exam objective:**

> Parallelize integration logic using scatter-gather.

## What the exam expects

- Parallelize independent integration work with deliberate per-event concurrency.
- Calculate completion from complete routes and their scheduling limits.
- Read nested route-message results and flatten the required array level.
- Preserve transaction boundaries and repeatable-stream access.
- Interpret new route failures separately from inherited handler context.

A **route** is a sequence of processors; **concurrency** is the number of routes executing together; a **message envelope** carries payload and attributes; **aggregation** combines route results; a **composite error** retains several route outcomes. Timing and inherited-error edge cases below explicitly use Mule4.6.0.

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Route sequence | Processors within a route finish in order before that route returns. | [Scatter-Gather](https://docs.mulesoft.com/mule-runtime/4.6/scatter-gather-concept) |
| Concurrency cap | Limits simultaneous routes for the current event. | [Scatter-Gather](https://docs.mulesoft.com/mule-runtime/4.6/scatter-gather-concept) |
| Mule4.6.0 timeout | Applies within each executing route publisher. | [Fork-join implementation](https://github.com/mulesoft/mule/blob/f686c2d3f2ed5f3153e2ffa0a9702eab51082a14/modules/core-components/src/main/java/org/mule/runtime/core/internal/routing/forkjoin/AbstractForkJoinStrategyFactory.java) |
| Active transaction | Makes Scatter-Gather routes sequential. | [Transaction management](https://docs.mulesoft.com/mule-runtime/4.6/transaction-management) |
| Parallel stream reading | Requires repeatable access. | [Streaming](https://docs.mulesoft.com/mule-runtime/4.6/streaming-about) |
| Nested results | Cross a message payload at each router level. | [Scatter-Gather](https://docs.mulesoft.com/mule-runtime/4.6/scatter-gather-concept) |
| Array combination | Extract route payloads before flattening their array level. | [Scatter-Gather](https://docs.mulesoft.com/mule-runtime/4.6/scatter-gather-concept) |
| Inherited error | An unchanged original error is not itself a new route failure. | [Fork-join implementation](https://github.com/mulesoft/mule/blob/f686c2d3f2ed5f3153e2ffa0a9702eab51082a14/modules/core-components/src/main/java/org/mule/runtime/core/internal/routing/forkjoin/AbstractForkJoinStrategyFactory.java) |

## Check yourself

- Why can `error.detailedDescription` be no longer than `error.description`?
- When should a diagnostic reader inspect `error.childErrors`?
- Must every Mule error contain child errors?

## Sources

- [Scatter-Gather, Mule4.6](https://docs.mulesoft.com/mule-runtime/4.6/scatter-gather-concept)
- [Streaming, Mule4.6](https://docs.mulesoft.com/mule-runtime/4.6/streaming-about)
- [Transaction management, Mule4.6](https://docs.mulesoft.com/mule-runtime/4.6/transaction-management)
- [Mule errors, Mule4.6](https://docs.mulesoft.com/mule-runtime/4.6/mule-error-concept)
- [DataWeave2.6 flatten](https://docs.mulesoft.com/dataweave/2.6/dw-core-functions-flatten)
- [DataWeave2.6 valuesOf](https://docs.mulesoft.com/dataweave/2.6/dw-core-functions-valuesof)
- [Mule4.6.0 fork-join implementation](https://github.com/mulesoft/mule/blob/f686c2d3f2ed5f3153e2ffa0a9702eab51082a14/modules/core-components/src/main/java/org/mule/runtime/core/internal/routing/forkjoin/AbstractForkJoinStrategyFactory.java)
- [Mule4.6.0 On Error Continue implementation](https://github.com/mulesoft/mule/blob/f686c2d3f2ed5f3153e2ffa0a9702eab51082a14/core/src/main/java/org/mule/runtime/core/internal/exception/OnErrorContinueHandler.java)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 8 linked practice questions, and unlimited timed mock exams are included with the MuleSoft Developer II pack (USD $19): https://www.certifyforce.com/practice-exams
