Radek Musil
About meSkills
Services
My Projects
AI news
Contact me
Zpět na slovník

Fronta zpráv

InfrastrukturaMessage queue

Také známo jako Job queue, Broker

Stručně

Pomalá nebo riskantní práce opouští požadavek: worker ji vyzvedne z fronty a při selhání ji bezpečně zopakuje.

Fronta je trvalý seznam úloh s producentem a konzumentem: API zapíše zprávu, worker ji později přečte a práci udělá. Odeslání e-mailu s fakturou, generování PDF nebo dlouhý AI úkol nemusí a nemá běžet uvnitř uživatelova požadavku — je pomalý, selhává a zákazník mezitím zírá na načítač.

Mimo kritickou cestu

Úlohu vyndejte z požadavku, když trvá víc než sekundu, může se ztratit, aniž by si toho uživatel všiml, nebo závisí na externí službě, která občas padá. API vrátí 202 Accepted a id úlohy; frontend pak sleduje stav přes endpoint nebo realtime. Zákazník dostane potvrzení za 200 ms a e-mail s fakturou odejde, jakmile mailserver dovolí.

U AI úloh je to skoro povinnost. Generování nebo shrnutí, které trvá minutu, nesmí držet HTTP spojení — dejte ho do fronty, zpracujte a výsledek uložte pod id úlohy.

Opakování, dead-letter fronta a idempotence

Selhání jsou normální: mailserver zprávu odmítne, AI poskytovatel vrátí 529, služba na PDF restartuje. Zkuste to párkrát s exponenciálně rostoucí prodlevou a stropem — maximálně pět pokusů — a pak skončete. Zpráva, která pořád selhává, nesmí blokovat frontu za sebou na další dvě hodiny.

Po vyčerpání pokusů jde zpráva do dead-letter fronty, kde rozbité zprávy čekají na člověka. Nastavte alarm na jejich počet, protože dead-letter fronta, kterou nikdo nesleduje, je jen hodně pomalá ztráta dat.

Začněte v malém

Kafka první den nepotřebujete. Tabulka úloh v PostgreSQL se sloupcem stavu, zámkem a smyčkou workera zvládne tisíce úloh denně bez nové infrastruktury a čekající práci máte na jeden SELECT. Na samostatný broker přejděte, až když potřebujete fan-out, garantované pořadí nebo statisíce zpráv.

Každý handler ale i tak musí být idempotentní: doručení aspoň jednou znamená, že zpráva může projít dvakrát, třeba po timeoutu, když worker práci ve skutečnosti dokončil. Upřímný kompromis je pozorovatelnost — úloha ve frontě je z pohledu stack trace neviditelná. Logujte id úlohy v každém kroku, dejte hloubku fronty a chybovost do dashboardu a přidejte admin stránku pro opětovné spuštění neúspěšných úloh.

Zdroje

  • martinfowler.com — Patterns of distributed systems

Související pojmy

Webhook

Služba zavolá váš server ve chvíli, kdy se něco stalo, místo abyste se stokrát ptali, jestli se to už stalo.

Idempotence

Stejný požadavek odeslaný dvakrát musí mít stejný efekt jako jeden — jinak opakování strhne zákazníkovi peníze znovu.

Serverless

Funkce a edge platformy, kde si neprovozujete ani neladíte server sami — platíte za požadavky, ne za stroj.

Zpět na slovník
LighthouseMobile-first
Radek Musil|Product Engineer
·
|Helper·Privacy Policy·Cookies·Terms of Use|

© 2026 Radek Musil. All rights reserved.