Spring Modulith / SNS / SQS

Publish an event. Keep the boundaries.

Follow a versioned event from its logical target to source verification, a fenced claim, local dispatch, and SQS acknowledgement.

Publish success ≠ consumer completion

Explore the delivery boundary

SQS and SNS choose the outbound service. DIRECT describes how the inbound SQS body is read.

Delivery path
SQS publish → DIRECT input

The publisher sends the envelope and String attributes to a configured queue. The consumer reads the body in DIRECT mode.

    Current boundary ·

    Select a step or use Next. Play advances the explanation; it does not contact AWS.

    One envelope. Explicit identity.

    The same event identity crosses the publication and consumption boundaries. Transport attributes must agree with the envelope.

    specVersionWire format = 1
    idStable event identity
    type + versionExplicit registry entry
    payloadSerialized string, byte limits
    headersAllowlisted business headers
    bt4k-event-*ID/type/version attributes must agree

    Three views, two publishers

    Publication success does not confirm remote consumption.

    SQS

    The publisher sends the envelope and String attributes to a configured queue. The consumer reads the body in DIRECT mode.

    SNS

    The configured subscription delivers a wrapped Notification to SQS. Check the allowed topic and signature before decoding its Message.

    DIRECT

    DIRECT is an inbound body mode, not a third publisher or a local shortcut. SNS-shaped bodies are rejected; queue access policy remains operator-owned.

    Make ownership explicit

    The adapter orders the steps. Application and operational policy determine what happens across retries and restarts.

    Adapter

    Bounded publication, envelope checks, source verification, fenced claim orchestration, synchronous dispatch, and manual acknowledgement ordering.

    Application & operations

    AWS clients and credentials, IAM, topics, queues, subscriptions, retry/DLQ policy, durable idempotency storage, and business-effect safety.

    This explorer models control-flow boundaries, not a running broker. In-memory idempotency cannot provide cross-process or restart durability. Async handlers and partial side effects need application-level safeguards.