# Message aggregation and JMS messaging patterns

*MuleSoft Platform Integration Architect Study Guide · Designing architecture using integration paradigms · Last updated November 13, 2026 · https://www.certifyforce.com/study-guide/mulesoft-platform-integration-architect/designing-architecture-using-integration-paradigms/message-aggregation-and-jms-messaging-patterns*

Implement the Aggregator pattern with the Mule Aggregators module (size, time and group scopes, completion and timeout routes, listeners, eviction and content), and the JMS durable-subscription, request-reply and no-local patterns with JMS Connector.

- Certification: Salesforce MuleSoft Platform Integration Architect
- Exam section: Designing architecture using integration paradigms
- Study guide: https://www.certifyforce.com/study-guide/mulesoft-platform-integration-architect

**Official exam objective:**

> Design Mule applications and integration solutions using common messaging patterns and technologies.

## What the exam expects

- Map an Enterprise Integration Pattern to the Mule component that implements it.
- Choose a size-based, time-based or group-based aggregator and set its Group Id, Group Size, Content, Timeout and Eviction Time from the requirement.
- Route released elements correctly: the aggregation-complete route, the Aggregator Listener for timeouts, and the unchanged pass-through payload.
- Reactivate a durable JMS subscription, route request-reply responses, and exclude a connection's own publications.

**Aggregator scope**: a component that extracts a value from each message and adds it to a list of aggregated elements. **Pass-through router**: a router whose following components receive the same data it received. **Aggregator Listener**: a source in another flow triggered when a named aggregator releases its elements. **Eviction Time**: how long a group ID is remembered after it completes or times out. **Durable subscription**: a topic subscription whose messages the JMS provider stores while the consumer is offline ([Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference), [JMS topic subscriptions](https://docs.mulesoft.com/jms-connector/latest/jms-topic-subscription)).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Pass-through | Components after the scope receive the original data. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Time-based period | Starts at the first element's arrival. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Size-based timeout | Aggregation Complete route does not run on timeout. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Eviction Time | Default 180 seconds; 0 don't remember; -1 forever. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Timeout 0 | Not supported. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Content | Stored in an object store, so it must be serializable. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Listener | One aggregator per listener, one listener per aggregator; timed-out groups default false. | [Aggregators reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference) |
| Duplicate handling | Guard the listener path with `isAggregationComplete`. | [Aggregator examples](https://docs.mulesoft.com/aggregators-module/latest/aggregators-multiple-examples) |
| Durable reactivation | Same connection, client ID, topic and subscription name. | [JMS topic subscriptions](https://docs.mulesoft.com/jms-connector/latest/jms-topic-subscription) |
| Reply matching | CORRELATION_ID default; MESSAGE_ID; NONE. | [JMS publish consume](https://docs.mulesoft.com/jms-connector/latest/jms-publish-consume) |
| Reply wait | Maximum wait exceeded fails with JMS:TIMEOUT. | [JMS publish consume](https://docs.mulesoft.com/jms-connector/latest/jms-publish-consume) |

## Check yourself

- Which error does a group-based aggregator raise when its Group Id expression returns null?
- When does the autogenerated Aggregation ID of a size-based or time-based aggregation change?
- Why does a time-driven aggregation usually need an Aggregator Listener?
- What happens when a Publish consume operation receives no reply within its Maximum wait?

## Sources

- [Aggregators Module Reference](https://docs.mulesoft.com/aggregators-module/latest/aggregators-module-reference)
- [Aggregators Module Multiple Examples](https://docs.mulesoft.com/aggregators-module/latest/aggregators-multiple-examples)
- [Enterprise Integration Patterns Using Mule](https://docs.mulesoft.com/mule-runtime/latest/understanding-enterprise-integration-patterns-using-mule)
- [Configure Topic Subscriptions with JMS Connector](https://docs.mulesoft.com/jms-connector/latest/jms-topic-subscription)
- [Publish Messages and Consume Replies Using the JMS Connector](https://docs.mulesoft.com/jms-connector/latest/jms-publish-consume)
- [Listen for New Messages Using the JMS Connector](https://docs.mulesoft.com/jms-connector/latest/jms-listener)

## About the full unit

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