Aggregator

The Aggregator is the target of transactional send requests coming from the Web API part of the message generator.

Messages are delivered by Pub/Sub and consumed via streaming pull. The Aggregator:

  • Parses each message

    • Publishes bad messages to the error topic sending-mg-errors

    • Enriches valid messages with campaign information and generates the route

  • Determines the output path based on personalization needs and channel:

    • Push, personalized → publishes to event-pers.push.request-publisher.tx.<dg>

    • Push, non-personalized → publishes directly to sending-tx-devicemapper-<dg>

    • Embedded message, personalized → publishes to event-pers.push.request-publisher.tx.<dg>

    • Embedded message, non-personalized → publishes to sending-tx-em-<dg>

  • Acknowledges the original message regardless of whether an error was detected

Dependencies

The Aggregator is located between the Web API and the Personalizer / Device Mapper:

  • Pub/Sub:

    • Receives messages from subscription sending-tx-<dg>-sub

    • Publishes to personalization topic event-pers.push.request-publisher.tx.<dg> or device mapper topic sending-tx-devicemapper-<dg>

    • In case of transient errors, publishes to the Pub/Sub Delay Service

    • In case of fatal errors, publishes to sending-mg-errors

  • me-push: Fetches campaign information

  • Kibana: Logging

Aggregator Components & Dependencies

Error Handling

  • Transient errors: Uses the Pub/Sub delay service to redeliver messages with exponential backoff. If retries are exhausted, the message is logged and dropped.

  • Fatal errors: Published to sending-mg-errors for investigation.

See Error Handling for the full retry policy.