worker generátorok
Négy generátor scaffoldolja a worker oldalt: eventek, listenerek és ütemezett jobok. A new project már tartalmazza a cmd/worker binárist; az add worker a worker-réteget adja hozzá egy olyan projekthez, amiben még nincs.
add event
go tool gpsystem add event <modul> <név>
Létrehozza az internal/modules/<modul>/events/<név>.go-t (egy event struct + EventName()), és a modul első eventjekor bedrótoz egy outbox events.Dispatcher-t a Dependencies-ébe, majd megkonstruálja a cmd/<modul>/main.go-ban és a cmd/worker/main.go-ban is. Idempotens: a második event újrahasználja a dispatchert. Rögzíti az eventet a gpsystem.yaml-ban.
go tool gpsystem add event orders orderPlaced
Utána adj mezőket a generált structhoz, és dobd el egy service-ből a Transactor.WithinTransaction-ön belül (lásd events).
add listener
go tool gpsystem add listener <modul> <event> <név> [--queue <sor>]
Létrehoz egy listener stubot a <modul>-ban, és regisztrálja a listeners/register.go-ban. Az <event> a név, ha a modul saját eventjéről van szó, vagy termelő.név, ha egy másik modul eventjére iratkozol fel.
| Flag | Jelentés |
|---|---|
--queue | az asynq sor, amin a listener fut (alapértelmezés: a default sor) |
go tool gpsystem add listener orders orderPlaced sendConfirmationEmail --queue emails
go tool gpsystem add listener shipping orders.orderPlaced reserveStock # modulok közti
Az eventnek már léteznie kell (előbb add event). Minden listener önálló, újrapróbált task: a törzsét idempotensen valósítsd meg.
add job
go tool gpsystem add job <modul> <név> --cron "0 3 * * *"
Létrehoz egy job handler stubot és ütemezi a jobs/register.go-ban. A --cron 5-mezős cron kifejezéseket és asynq descriptorokat (@every 30m, @daily) fogad el.
go tool gpsystem add job orders expireStaleCarts --cron "0 * * * *"
add worker
go tool gpsystem add worker
Hozzáadja a worker-réteget (binary, sorbekötés, listener/job scaffolding) egy olyan projekthez, amiben még nincs: a cmd/worker binárist, minden modul listeners/ és jobs/ alcsomagját, az outbox migrációt és a Valkey/worker konfigurációt. A new project és a new module már bedrótozza ezt neked, tehát az add worker-t akkor veszed elő, ha egy projekt e nélkül lett összeállítva. Ha a compose.yml / .env.example nem tartalmazza az anchorokat, a beillesztendő blokkot kiírja beillesztésre ahelyett, hogy hibázna (ezek a fájlok nem fordulnak).
Mi drótozódik be
| Generátor | Létrehozza | Bedrótozza (a // gpsystem:* anchoroknál) |
|---|---|---|
add event | events/<név>.go | Dispatcher mező a register.go-ban; konstrukciója a cmd/<modul>-ban és cmd/worker-ben |
add listener | listeners/<név>.go | events.Listen(...) a listeners/register.go-ban |
add job | jobs/<név>.go | sched.Job(...) a jobs/register.go-ban |
add worker | cmd/worker, modulonkénti listeners//jobs/ alcsomag, outbox migráció | worker/valkey konfig; minden modul a worker mainbe |
upgrade templates csak a bemásolt oapi-codegen template-eket szinkronizálja; a worker scaffoldhoz nem nyúl. A worker-réteg meglévő projektbe illesztéséhez az add worker-t használd.add mail egy mail-notifiert (internal/modules/<modul>/mail/) scaffoldol, és a projekt első notifierénél bedrótozza a mail.Mailer-t minden belépési pontba. Egy mail-notifiert jellemzően egy itt generált listenerből hívsz, lásd a contact-email kidolgozott példát.