An aggregator joins messages from multiple connectors into a single flow by correlating them. A custom aggregator is implemented as a user-written class that aggregates messages by implementing the MessageProcessor interface. Configuring a custom aggregator involves specifying its class name, timeout, message info mapping, and optional properties. The message info mapping tab defines expressions to map message attributes to the message ID and correlation ID.