Dual Message Flows: Synchronous HTTP vs Asynchronous Queue

Dual Message Flows: Synchronous HTTP vs Asynchronous Queue A sequence diagram generated by Archify. POST /api/products [X-Source-Region] forward to local app SQL INSERT product (global writer) 201 Created (JSON response) publish order.created (async AMQP) deliver to @RabbitListener persist order state in DB basicAck (dequeue) poll queue_region_status lease connect dynamic listener to remote broker drain remote broker queue 1. Synchronous HTTP Flow (REST API) 2. Asynchronous Queue Flow (AMQP Messaging) 3. DR Queue Takeover via DB Lease HTTP Client · Browser / REST · Sequence participant HTTP Client Browser / REST Nginx Router · reverse proxy :8000 · Sequence participant Nginx Router reverse proxy :8000 Spring Boot · app-us :8080 · Sequence participant · Spring Spring Boot app-us :8080 PostgreSQL · Aurora & Leases · Sequence participant · PostgreSQL PostgreSQL Aurora & Leases RabbitMQ · broker :5672 · Sequence participant · RabbitMQ RabbitMQ broker :5672 Event Producer · order service · Sequence participant Event Producer order service Legend request return async trace default message

Synchronous HTTP Flow

  • • Inbound REST requests route via Nginx using X-Source-Region
  • • Immediate blocking response; mutations route to global writer

Asynchronous Queue Flow

  • • AMQP events publish decoupled into regional RabbitMQ brokers
  • • Local listener containers process messages with retry & DLQ

DR Queue Takeover

  • • Queue failover uses PostgreSQL lease coordination, not Nginx
  • • Surviving region dynamically drains failed region's queues
📍 Case 1: Aurora HA (Single Writer)⚡ Case 2: Cassandra (Active-Active)🔄 HTTP Sync vs Queue Async Flows