When an order is placed, three independent systems — fulfillment, analytics, and notifications — must each receive the event. The systems should not know about each other, and adding future consumers should not require producer changes. Which design fits best?
A.The API calls each of the three services synchronously
Synchronous fan-out couples the API to each consumer's availability and requires code changes to add consumers.
B.Publish the order event to an SNS topic with each consumer subscribed (e.g., via its own SQS queue)
Correct. SNS fan-out (typically to per-consumer SQS queues) decouples producer and consumers.
C.Write the event to a shared RDS table that each service polls every second
Polling a shared table adds load, latency, and coupling on a schema.
D.Send the event through a single SQS queue shared by all consumers
Competing consumers on one SQS queue divide messages rather than each receiving a copy.
Why this answer
SNS pub/sub delivers each event to every subscriber. A common pattern is SNS → SQS per consumer (fan-out), giving each system its own durable queue and independent retry/failure semantics while the producer stays unaware of consumers.
Correct answer: B · Last reviewed 2026-10-25
Official AWS references
Practice this interactively
Answer without seeing the solution first in the Decoupling & Messaging practice session.
Practice Decoupling & Messaging