Přeskočit na obsah

Objednávky se nesmí ztrácet.

RabbitMQ, fronty zpráv a async zpracování oddělí kritické procesy od HTTP requestu. Objednávky, email queue, synchronizace skladu i notifikace běží spolehlivě na pozadí — s retry mechanismem a bez ztráty jediné zprávy.

RabbitMQ · AMQP Email queue Dead-letter · retry žádná ztracená objednávka

Když e-shop zpracovává objednávku synchronně — odešle e-mail, zapíše do skladu, zavolá platební bránu a vystaví doklad, to vše během jednoho HTTP requestu — stává se křehkým. Stačí pomalý SMTP server nebo nedostupné API a zákazník čeká, dostane chybu, nebo se objednávka vůbec nedokončí. Při nárazové špičce se takový e-shop snadno zahltí.

Řešením je async zpracování. RabbitMQ jako message broker přijme úkol do fronty zpráv a e-shop hned odpoví zákazníkovi. Náročné a na okolních systémech závislé operace pak zpracují worker procesy na pozadí — vlastním tempem, spolehlivě a s možností opakování při selhání.

Jaké problémy řešíme

  • Objednávky se ztrácejí nebo nedokončí při přetížení
  • E-mailové notifikace se neodešlou nebo jdou do spamu
  • Synchronizace skladu blokuje zákazníka v prohlížeči
  • Výpadek navazujícího systému shodí celé objednání
  • Špičky při výprodejích zahlcují databázi i API
  • Selhání úkolu zmizí bez záznamu a bez opakování

Typické symptomy

queue.log · co slýcháme
symptomWARN„zákazník nedostal potvrzení objednávky"
symptomWARN„objednávka nedošla do skladu"
symptomWARN„checkout je pomalý kvůli e-mailům"
symptomWARN„při výpadku ERP přestal fungovat nákup"
symptomWARN„ve špičce se objednávky ztrácely"
symptomWARN„feed na Heureku se generuje v requestu"

Message broker, workery a spolehlivé doručení

Nasadíme RabbitMQ jako centrální frontu, navrhneme strukturu front a exchangů a postavíme worker procesy, které zprávy zpracovávají. Klíčová je spolehlivost: potvrzování zpráv (acknowledgements), retry mechanismus pro přechodná selhání a dead-letter queue pro zprávy, které je potřeba vyřešit ručně. Vše s monitoringem a alertingem při zaseknutí fronty.

Typické využití

  • Fronty objednávek — zpracování nezávislé na HTTP
  • Email queue — spolehlivé odeslání notifikací
  • Synchronizace se skladem nebo ERP systémem
  • Generování PDF dokladů a faktur na pozadí
  • Notifikace do srovnávačů (Heureka, Zboží)
  • Retry mechanismus pro selhavší zprávy
  • Dead-letter queue — žádná objednávka se neztratí

rabbitmq · queue status

ordersOK queue · 3 msgs · 2 consumers
emailOK queue · 0 msgs · 1 consumer
syncOK warehouse-sync · acked 142/142
dlqOK dead-letter · 0 msgs
workerOK order-worker · pid 3421 · running
workerOK email-worker · pid 3422 · running

Async zpracování zavádíme inkrementálně — začneme nejkritičtějším tokem a další procesy přidáváme podle priorit. Integrace probíhá přes PHP a stávající aplikaci, takže nevyžaduje přepis celého e-shopu. Výsledkem je svižnější web, odolnost vůči výpadkům navazujících systémů a jistota, že se žádný úkol cestou neztratí.

Co async zpracováním získáte

  • Žádná ztracená objednávka ani notifikace
  • Svižnější checkout nezávislý na e-mailech a API
  • Odolnost vůči výpadkům skladu, ERP či SMTP
  • Zvládnuté špičky při slevách a výprodejích
  • Automatické opakování při přechodném selhání
  • Přehled o stavu front a workerů
  • FAQ k frontám a async zpracování

    K čemu je v e-shopu RabbitMQ a fronty zpráv?
    RabbitMQ je message broker — odděluje přijetí požadavku od jeho zpracování. Když zákazník dokončí objednávku, e-shop ji okamžitě uloží do fronty zpráv a hned odpoví. Náročné operace (e-maily, synchronizace skladu, generování dokladů) pak zpracují worker procesy na pozadí. Zákazník nečeká a nic se neztratí.
    Proč neposílat e-maily a synchronizace přímo v requestu?
    Synchronní zpracování v HTTP requestu je křehké. Když je pomalý SMTP server nebo nedostupné API skladu, zákazník čeká — nebo dostane chybu a objednávka se nedokončí. Async zpracování přes email queue a fronty tyto operace vyjme z requestu: web zůstává svižný a odolný vůči výpadkům navazujících systémů.
    Co se stane, když zpracování zprávy selže?
    Nastavíme retry mechanismus — neúspěšná zpráva se po definované prodlevě zkusí znovu. Když ani opakování neuspěje, putuje do dead-letter queue, kde čeká na vyřešení a neztratí se. Navíc alertujeme, takže o problému víte. Žádná objednávka ani notifikace nezmizí bez stopy.
    Zvládne fronta nárazové špičky při výprodejích?
    To je přesně situace, na kterou fronty cílí. Při špičce e-shop rychle přijímá objednávky do fronty a workery je zpracovávají vlastním tempem podle kapacity. Náraz se „rozloží v čase" místo toho, aby zahltil databázi nebo navazující systémy a shodil e-shop.
    Potřebuji kvůli RabbitMQ přepsat celý e-shop?
    Ne. Async zpracování se nasazuje postupně — začneme nejkritičtějším tokem, typicky objednávkami nebo e-maily, a další procesy přidáváme podle priorit. Integrace probíhá přes PHP a stávající aplikaci, takže přechod je inkrementální a bez velkého rizika.

    Postavíme spolehlivé async zpracování

    Popište svůj tok objednávek a integrací. Navrhneme fronty, workery a retry tak, aby se žádná zpráva neztratila.

    reakce do 24 h · pracovní dny NDA na vyžádání akutní incident · 24/7