effect-mq 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/Job.d.ts.map +1 -1
- package/dist/Job.js +9 -5
- package/dist/Job.js.map +1 -1
- package/dist/Metrics.d.ts +98 -0
- package/dist/Metrics.d.ts.map +1 -0
- package/dist/Metrics.js +124 -0
- package/dist/Metrics.js.map +1 -0
- package/dist/Worker.d.ts +6 -0
- package/dist/Worker.d.ts.map +1 -1
- package/dist/Worker.js +62 -3
- package/dist/Worker.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/Job.ts +16 -4
- package/src/Metrics.ts +135 -0
- package/src/Worker.ts +101 -3
- package/src/index.ts +8 -0
package/README.md
CHANGED
|
@@ -171,6 +171,34 @@ DrizzleJobStore.layer({ ...tables, historyTtl: { completed: "1 day", failed: "90
|
|
|
171
171
|
The sweep honours `min(per-row keep.age, ceiling)`, so a job name that goes
|
|
172
172
|
quiet is still pruned on the timer, not only when its group is next acked.
|
|
173
173
|
|
|
174
|
+
## Metrics
|
|
175
|
+
|
|
176
|
+
Workers and producers emit Effect `Metric` instruments (exported as the
|
|
177
|
+
`Metrics` module). They are **process-local operational signal, not
|
|
178
|
+
persisted state** — wire up any Effect-compatible exporter (the Otlp modules
|
|
179
|
+
from `effect/unstable/observability`, `@effect/opentelemetry`, Prometheus)
|
|
180
|
+
and retention lives in your metrics backend. The *durable* analogues stay in
|
|
181
|
+
the store: `store.counts()` for live depth, the attempt ledger for per-run
|
|
182
|
+
history — both queryable forever.
|
|
183
|
+
|
|
184
|
+
| Metric | Type | Tags |
|
|
185
|
+
| --- | --- | --- |
|
|
186
|
+
| `effect_mq_jobs_enqueued` | counter | `name`, `queue`, `duplicate` |
|
|
187
|
+
| `effect_mq_job_runs` | counter | `name`, `queue`, `outcome` |
|
|
188
|
+
| `effect_mq_job_run_duration_ms` | histogram | `name`, `queue`, `outcome` |
|
|
189
|
+
| `effect_mq_job_wait_duration_ms` | histogram | `name`, `queue` |
|
|
190
|
+
| `effect_mq_claims` | counter | `queue`, `result` (claimed/empty) |
|
|
191
|
+
| `effect_mq_jobs_in_flight` | gauge | `queue` |
|
|
192
|
+
| `effect_mq_queue_depth` | gauge | `queue`, `state` (opt-in sampler) |
|
|
193
|
+
| `effect_mq_locks_lost` / `effect_mq_cancel_interrupts` | counter | — |
|
|
194
|
+
| `effect_mq_stalled_recovered` | counter | `outcome` |
|
|
195
|
+
| `effect_mq_schedule_ticks` | counter | `name` |
|
|
196
|
+
|
|
197
|
+
`job_wait_duration_ms` is the queue-latency headline: time between a job
|
|
198
|
+
becoming runnable and its claim. Depth sampling costs one `counts()` query
|
|
199
|
+
per queue per tick, so it is opt-in:
|
|
200
|
+
`Worker.layer({ queueMetricsInterval: "15 seconds" })`.
|
|
201
|
+
|
|
174
202
|
## Custom job ids
|
|
175
203
|
|
|
176
204
|
Store-assigned ids default to a compact sequence (`j-<n>`). Bring your own
|
|
@@ -475,6 +503,7 @@ handler).
|
|
|
475
503
|
| `maxStalledCount` | 1 | stalls tolerated before a job is failed outright |
|
|
476
504
|
| `pollInterval` | 5s | idle fallback when no wake-up arrives (wake-ups are queue-filtered and push-based, so the default is fine even on Postgres) |
|
|
477
505
|
| `scheduleSweepInterval` | 15s | how often to tick due repeatable-job schedules |
|
|
506
|
+
| `queueMetricsInterval` | off | sample `store.counts()` per queue into the depth gauge |
|
|
478
507
|
| `id` | random | identifier used in lock tokens |
|
|
479
508
|
|
|
480
509
|
**Store construction** — every driver accepts `idGenerator`, `historyTtl`,
|
package/dist/Job.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAS,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"Job.d.ts","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAS,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,KAAK,EAAU,MAAM,EAAa,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7H,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,EACL,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,QAAQ,EACR,KAAK,UAAU,EAEf,SAAS,EACT,WAAW,EAEX,KAAK,OAAO,IAAI,YAAY,EAC5B,aAAa,EACd,MAAM,eAAe,CAAA;AAGtB,OAAO;AACL;;;;;GAKG;AACH,aAAa,EACd,CAAA;AACD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAE3E,QAAA,MAAM,MAAM,EAAG,gBAAyB,CAAA;AAExC;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,MAAM,CAAC,GAAG;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;CACtC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAA;IAC9B,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CAC1C;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAAA;CAChD,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IAC3C,mDAAmD;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACrC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CAC9C;AAED;;GAEG;AACH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACvC,CAAA;AAmBD;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;IAChE,mFAAmF;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAC1C;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,YAAY;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAA;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACnD,oFAAoF;IACpF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAA;IAC9E,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,GAAG,CAClB,IAAI,SAAS,MAAM,EACnB,OAAO,SAAS,eAAe,EAC/B,OAAO,SAAS,MAAM,CAAC,GAAG,EAC1B,KAAK,SAAS,MAAM,CAAC,GAAG,EACxB,OAAO,GAAG,QAAQ;IAElB,KAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAA;IAEjB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAClD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAA;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACvD,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CACrC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAC3B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EACzB,MAAM,CAAC,MAAM,CACd,CACF,CAAA;IACD,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IAC3E,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC,GAAG,SAAS,CAAA;IACxE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;IAC/F,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAA;IACnE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IAEnC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAChB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,KACjC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAEvE,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,CACb,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EACxD,KAAK,EACL,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAClE,CAAA;IAED,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EACzD,KAAK,EACL,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAClE,CAAA;IAED;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,CACpB,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,KACrF,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,MAAM,CAAC,EACf,KAAK,CAAC,MAAM,CAAC,EACb,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAClE,CAAA;IAED,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAChB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,EACjC,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,KACjC,MAAM,CAAC,MAAM,CAChB,OAAO,CAAC,MAAM,CAAC,EACf,KAAK,CAAC,MAAM,CAAC,EACX,OAAO,GACP,OAAO,CAAC,kBAAkB,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,GAC3B,KAAK,CAAC,kBAAkB,CAAC,CAC5B,CAAA;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,CACd,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,EAAE,OAAO,CAAC,CAAA;IAE1E;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,CACf,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,sBAAsB,EAAE,OAAO,CAAC,CAAA;IAE5E,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,qBAAqB,EAAE,OAAO,CAAC,CAAA;IAE3E;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,KAC/C,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAE7E,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,CACnB,GAAG,EAAE,MAAM,KACR,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAE3C;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAClB,OAAO,EAAE,CACP,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,OAAO,EAAE,UAAU,KAChB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,KAClC,KAAK,CAAC,KAAK,CACd,KAAK,EACL,KAAK,EACH,MAAM,GACN,CAAC,GACD,OAAO,CAAC,kBAAkB,CAAC,GAC3B,OAAO,CAAC,kBAAkB,CAAC,GAC3B,KAAK,CAAC,kBAAkB,CAAC,CAC5B,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAC1B;AA+WD;;;;GAIG;AACH,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,eAAe,EACtD,OAAO,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EACxC,KAAK,SAAS,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,EACvC,OAAO,GAAG,QAAQ,QAEZ,IAAI,WACD;IACP,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EACpB,CAAC,CACD,OAAO,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GACvE,OAAO,CAAC,MAAM,CAAC,KAChB,MAAM,CAAC,GACV,SAAS,CAAA;IACb;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EACZ,CAAC,CACD,OAAO,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GACvE,OAAO,CAAC,MAAM,CAAC,KAChB,WAAW,CAAC,GACf,SAAS,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EACd,CAAC,CACD,OAAO,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GACvE,OAAO,CAAC,MAAM,CAAC,KAChB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GACpC,SAAS,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EACf,CAAC,CACD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KACjB,OAAO,CAAC,GACX,SAAS,CAAA;IACb,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,SAAS,CAAA;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;CAC3C,KACA,GAAG,CACJ,IAAI,EACJ,OAAO,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,EACvE,OAAO,EACP,KAAK,EACL,OAAO,CA4CR,CAAA"}
|
package/dist/Job.js
CHANGED
|
@@ -30,8 +30,9 @@
|
|
|
30
30
|
*
|
|
31
31
|
* @since 0.1.0
|
|
32
32
|
*/
|
|
33
|
-
import { Clock, Duration, Effect, Layer, Option, Predicate, Schedule, Schema } from "effect";
|
|
33
|
+
import { Clock, Duration, Effect, Layer, Metric, Option, Predicate, Schedule, Schema } from "effect";
|
|
34
34
|
import { JobCancelledError, JobId, JobNotFoundError, JobStore, nextOccurrence, QueueName, ScheduleKey, unrecoverable } from "./JobStore.js";
|
|
35
|
+
import * as Metrics from "./Metrics.js";
|
|
35
36
|
export {
|
|
36
37
|
/**
|
|
37
38
|
* Mark an error value as unrecoverable: the worker skips the remaining
|
|
@@ -109,12 +110,11 @@ const Proto = {
|
|
|
109
110
|
...options?.metadata
|
|
110
111
|
};
|
|
111
112
|
const dedupe = normalizeDedupe(options?.dedupe ?? this.dedupe?.(payload));
|
|
113
|
+
const queue = options?.queue !== undefined ? QueueName(options.queue) : this.queue;
|
|
112
114
|
return Schema.encodeEffect(this.payloadJsonSchema)(payload).pipe(Effect.orDie, Effect.flatMap((encoded) => Effect.flatMap(this.store, (store) => store.enqueue({
|
|
113
115
|
id,
|
|
114
116
|
name: this._tag,
|
|
115
|
-
queue
|
|
116
|
-
? QueueName(options.queue)
|
|
117
|
-
: this.queue,
|
|
117
|
+
queue,
|
|
118
118
|
payload: encoded,
|
|
119
119
|
metadata,
|
|
120
120
|
priority: options?.priority ?? this.defaults.priority,
|
|
@@ -132,7 +132,11 @@ const Proto = {
|
|
|
132
132
|
delayMs: options?.delay !== undefined
|
|
133
133
|
? Duration.toMillis(options.delay)
|
|
134
134
|
: this.defaults.delayMs
|
|
135
|
-
}))), Effect.orDie, Effect.
|
|
135
|
+
}))), Effect.orDie, Effect.tap((result) => Metric.update(Metrics.jobsEnqueued.pipe(Metric.withAttributes({
|
|
136
|
+
name: this._tag,
|
|
137
|
+
queue,
|
|
138
|
+
duplicate: result.duplicate ? "true" : "false"
|
|
139
|
+
})), 1)), Effect.map((result) => result.id));
|
|
136
140
|
}).pipe(Effect.withSpan(`${this._tag}.enqueue`, {}, { captureStackTrace: false }));
|
|
137
141
|
},
|
|
138
142
|
poll(jobId) {
|
package/dist/Job.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../src/Job.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The metrics effect-mq emits, as Effect `Metric` instruments.
|
|
3
|
+
*
|
|
4
|
+
* Metrics are **process-local operational signal, not persisted state**:
|
|
5
|
+
* they live in the Effect metric registry of the emitting process and are
|
|
6
|
+
* exported by whatever exporter the application runs (the Otlp modules from
|
|
7
|
+
* `effect/unstable/observability`, `@effect/opentelemetry`, a Prometheus
|
|
8
|
+
* scraper, ...). Retention belongs to that metrics backend. The queue's
|
|
9
|
+
* *durable* analogues remain in the store — `store.counts()` for live depth
|
|
10
|
+
* and the attempt ledger for per-run history — and stay queryable forever.
|
|
11
|
+
*
|
|
12
|
+
* Producers emit `jobsEnqueued`; workers emit the rest from their loops.
|
|
13
|
+
* Everything is tagged with low-cardinality attributes only (job name,
|
|
14
|
+
* queue, outcome/result) — never ids or keys.
|
|
15
|
+
*
|
|
16
|
+
* This module is exported so applications can read the same instruments
|
|
17
|
+
* (e.g. `Metric.value(Metrics.jobRuns.pipe(Metric.withAttributes({...})))`)
|
|
18
|
+
* or reference the names when building dashboards.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.3.1
|
|
21
|
+
*/
|
|
22
|
+
import { Metric } from "effect";
|
|
23
|
+
/**
|
|
24
|
+
* Producer-side enqueues. Tags: `name`, `queue`, `duplicate` ("true" when
|
|
25
|
+
* the enqueue deduplicated against an existing id or dedup key).
|
|
26
|
+
*
|
|
27
|
+
* @since 0.3.1
|
|
28
|
+
*/
|
|
29
|
+
export declare const jobsEnqueued: Metric.Counter<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Finished runs, one per handler attempt. Tags: `name`, `queue`, `outcome`
|
|
32
|
+
* (completed | retried | failed | cancelled | released).
|
|
33
|
+
*
|
|
34
|
+
* @since 0.3.1
|
|
35
|
+
*/
|
|
36
|
+
export declare const jobRuns: Metric.Counter<number>;
|
|
37
|
+
/**
|
|
38
|
+
* Handler execution time in milliseconds (claim to ack). Tags: `name`,
|
|
39
|
+
* `queue`, `outcome`.
|
|
40
|
+
*
|
|
41
|
+
* @since 0.3.1
|
|
42
|
+
*/
|
|
43
|
+
export declare const jobRunDuration: Metric.Histogram<number>;
|
|
44
|
+
/**
|
|
45
|
+
* Queue latency in milliseconds: how long a job was runnable (past its
|
|
46
|
+
* `runAt`) before a worker claimed it. Tags: `name`, `queue`.
|
|
47
|
+
*
|
|
48
|
+
* @since 0.3.1
|
|
49
|
+
*/
|
|
50
|
+
export declare const jobWaitDuration: Metric.Histogram<number>;
|
|
51
|
+
/**
|
|
52
|
+
* Claim attempts by result. Tags: `queue`, `result` (claimed | empty).
|
|
53
|
+
* A high empty ratio means takers outnumber work.
|
|
54
|
+
*
|
|
55
|
+
* @since 0.3.1
|
|
56
|
+
*/
|
|
57
|
+
export declare const claims: Metric.Counter<number>;
|
|
58
|
+
/**
|
|
59
|
+
* Handlers currently executing. Tags: `queue`.
|
|
60
|
+
*
|
|
61
|
+
* @since 0.3.1
|
|
62
|
+
*/
|
|
63
|
+
export declare const jobsInFlight: Metric.Gauge<number>;
|
|
64
|
+
/**
|
|
65
|
+
* Queue depth by state, sampled from `store.counts()` when
|
|
66
|
+
* `Worker.layer({ queueMetricsInterval })` is set. Tags: `queue`, `state`.
|
|
67
|
+
*
|
|
68
|
+
* @since 0.3.1
|
|
69
|
+
*/
|
|
70
|
+
export declare const queueDepth: Metric.Gauge<number>;
|
|
71
|
+
/**
|
|
72
|
+
* Locks found gone at renewal, counted once per lost lock (the job may run
|
|
73
|
+
* twice). Tags: none.
|
|
74
|
+
*
|
|
75
|
+
* @since 0.3.1
|
|
76
|
+
*/
|
|
77
|
+
export declare const locksLost: Metric.Counter<number>;
|
|
78
|
+
/**
|
|
79
|
+
* Cross-process cancel requests delivered to running handlers by the
|
|
80
|
+
* heartbeat. Tags: none.
|
|
81
|
+
*
|
|
82
|
+
* @since 0.3.1
|
|
83
|
+
*/
|
|
84
|
+
export declare const cancelInterrupts: Metric.Counter<number>;
|
|
85
|
+
/**
|
|
86
|
+
* Jobs recovered by the stalled sweep. Tags: `outcome` (requeued | failed).
|
|
87
|
+
*
|
|
88
|
+
* @since 0.3.1
|
|
89
|
+
*/
|
|
90
|
+
export declare const stalledRecovered: Metric.Counter<number>;
|
|
91
|
+
/**
|
|
92
|
+
* Repeatable-schedule occurrences enqueued by this worker's sweep. Tags:
|
|
93
|
+
* `name` (the job name).
|
|
94
|
+
*
|
|
95
|
+
* @since 0.3.1
|
|
96
|
+
*/
|
|
97
|
+
export declare const scheduleTicks: Metric.Counter<number>;
|
|
98
|
+
//# sourceMappingURL=Metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metrics.d.ts","sourceRoot":"","sources":["../src/Metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,wBAEvB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,wBAElB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,0BAGzB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,0BAG1B,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,wBAEjB,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,sBAEvB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,sBAErB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,wBAEpB,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,wBAE3B,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,wBAE3B,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,wBAExB,CAAA"}
|
package/dist/Metrics.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The metrics effect-mq emits, as Effect `Metric` instruments.
|
|
3
|
+
*
|
|
4
|
+
* Metrics are **process-local operational signal, not persisted state**:
|
|
5
|
+
* they live in the Effect metric registry of the emitting process and are
|
|
6
|
+
* exported by whatever exporter the application runs (the Otlp modules from
|
|
7
|
+
* `effect/unstable/observability`, `@effect/opentelemetry`, a Prometheus
|
|
8
|
+
* scraper, ...). Retention belongs to that metrics backend. The queue's
|
|
9
|
+
* *durable* analogues remain in the store — `store.counts()` for live depth
|
|
10
|
+
* and the attempt ledger for per-run history — and stay queryable forever.
|
|
11
|
+
*
|
|
12
|
+
* Producers emit `jobsEnqueued`; workers emit the rest from their loops.
|
|
13
|
+
* Everything is tagged with low-cardinality attributes only (job name,
|
|
14
|
+
* queue, outcome/result) — never ids or keys.
|
|
15
|
+
*
|
|
16
|
+
* This module is exported so applications can read the same instruments
|
|
17
|
+
* (e.g. `Metric.value(Metrics.jobRuns.pipe(Metric.withAttributes({...})))`)
|
|
18
|
+
* or reference the names when building dashboards.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.3.1
|
|
21
|
+
*/
|
|
22
|
+
import { Metric } from "effect";
|
|
23
|
+
/** Milliseconds, 5ms .. ~55 minutes. */
|
|
24
|
+
const durationBoundaries = Metric.exponentialBoundaries({ start: 5, factor: 2, count: 20 });
|
|
25
|
+
/**
|
|
26
|
+
* Producer-side enqueues. Tags: `name`, `queue`, `duplicate` ("true" when
|
|
27
|
+
* the enqueue deduplicated against an existing id or dedup key).
|
|
28
|
+
*
|
|
29
|
+
* @since 0.3.1
|
|
30
|
+
*/
|
|
31
|
+
export const jobsEnqueued = Metric.counter("effect_mq_jobs_enqueued", {
|
|
32
|
+
description: "Jobs submitted via Job.enqueue/execute, including deduplicated submissions"
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Finished runs, one per handler attempt. Tags: `name`, `queue`, `outcome`
|
|
36
|
+
* (completed | retried | failed | cancelled | released).
|
|
37
|
+
*
|
|
38
|
+
* @since 0.3.1
|
|
39
|
+
*/
|
|
40
|
+
export const jobRuns = Metric.counter("effect_mq_job_runs", {
|
|
41
|
+
description: "Handler runs by outcome (released = handed back on worker shutdown)"
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Handler execution time in milliseconds (claim to ack). Tags: `name`,
|
|
45
|
+
* `queue`, `outcome`.
|
|
46
|
+
*
|
|
47
|
+
* @since 0.3.1
|
|
48
|
+
*/
|
|
49
|
+
export const jobRunDuration = Metric.histogram("effect_mq_job_run_duration_ms", {
|
|
50
|
+
description: "Handler execution time in milliseconds, claim to ack",
|
|
51
|
+
boundaries: durationBoundaries
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Queue latency in milliseconds: how long a job was runnable (past its
|
|
55
|
+
* `runAt`) before a worker claimed it. Tags: `name`, `queue`.
|
|
56
|
+
*
|
|
57
|
+
* @since 0.3.1
|
|
58
|
+
*/
|
|
59
|
+
export const jobWaitDuration = Metric.histogram("effect_mq_job_wait_duration_ms", {
|
|
60
|
+
description: "Time between a job becoming runnable and its claim, in milliseconds",
|
|
61
|
+
boundaries: durationBoundaries
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Claim attempts by result. Tags: `queue`, `result` (claimed | empty).
|
|
65
|
+
* A high empty ratio means takers outnumber work.
|
|
66
|
+
*
|
|
67
|
+
* @since 0.3.1
|
|
68
|
+
*/
|
|
69
|
+
export const claims = Metric.counter("effect_mq_claims", {
|
|
70
|
+
description: "Store claim attempts by result"
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Handlers currently executing. Tags: `queue`.
|
|
74
|
+
*
|
|
75
|
+
* @since 0.3.1
|
|
76
|
+
*/
|
|
77
|
+
export const jobsInFlight = Metric.gauge("effect_mq_jobs_in_flight", {
|
|
78
|
+
description: "Handlers currently executing"
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* Queue depth by state, sampled from `store.counts()` when
|
|
82
|
+
* `Worker.layer({ queueMetricsInterval })` is set. Tags: `queue`, `state`.
|
|
83
|
+
*
|
|
84
|
+
* @since 0.3.1
|
|
85
|
+
*/
|
|
86
|
+
export const queueDepth = Metric.gauge("effect_mq_queue_depth", {
|
|
87
|
+
description: "Jobs per state, sampled from store.counts() per registered queue"
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* Locks found gone at renewal, counted once per lost lock (the job may run
|
|
91
|
+
* twice). Tags: none.
|
|
92
|
+
*
|
|
93
|
+
* @since 0.3.1
|
|
94
|
+
*/
|
|
95
|
+
export const locksLost = Metric.counter("effect_mq_locks_lost", {
|
|
96
|
+
description: "Locks found lost at heartbeat renewal, once per lock"
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* Cross-process cancel requests delivered to running handlers by the
|
|
100
|
+
* heartbeat. Tags: none.
|
|
101
|
+
*
|
|
102
|
+
* @since 0.3.1
|
|
103
|
+
*/
|
|
104
|
+
export const cancelInterrupts = Metric.counter("effect_mq_cancel_interrupts", {
|
|
105
|
+
description: "Running handlers interrupted by a cancel request"
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* Jobs recovered by the stalled sweep. Tags: `outcome` (requeued | failed).
|
|
109
|
+
*
|
|
110
|
+
* @since 0.3.1
|
|
111
|
+
*/
|
|
112
|
+
export const stalledRecovered = Metric.counter("effect_mq_stalled_recovered", {
|
|
113
|
+
description: "Stalled jobs recovered (requeued) or failed past the stall limit"
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* Repeatable-schedule occurrences enqueued by this worker's sweep. Tags:
|
|
117
|
+
* `name` (the job name).
|
|
118
|
+
*
|
|
119
|
+
* @since 0.3.1
|
|
120
|
+
*/
|
|
121
|
+
export const scheduleTicks = Metric.counter("effect_mq_schedule_ticks", {
|
|
122
|
+
description: "Repeatable-schedule occurrences enqueued by the schedule sweep"
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=Metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metrics.js","sourceRoot":"","sources":["../src/Metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,wCAAwC;AACxC,MAAM,kBAAkB,GAAG,MAAM,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;AAE3F;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE;IACpE,WAAW,EAAE,4EAA4E;CAC1F,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE;IAC1D,WAAW,EAAE,qEAAqE;CACnF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,+BAA+B,EAAE;IAC9E,WAAW,EAAE,sDAAsD;IACnE,UAAU,EAAE,kBAAkB;CAC/B,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,gCAAgC,EAAE;IAChF,WAAW,EAAE,qEAAqE;IAClF,UAAU,EAAE,kBAAkB;CAC/B,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;IACvD,WAAW,EAAE,gCAAgC;CAC9C,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;IACnE,WAAW,EAAE,8BAA8B;CAC5C,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;IAC9D,WAAW,EAAE,kEAAkE;CAChF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE;IAC9D,WAAW,EAAE,sDAAsD;CACpE,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE;IAC5E,WAAW,EAAE,kDAAkD;CAChE,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE;IAC5E,WAAW,EAAE,kEAAkE;CAChF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE;IACtE,WAAW,EAAE,gEAAgE;CAC9E,CAAC,CAAA"}
|
package/dist/Worker.d.ts
CHANGED
|
@@ -96,6 +96,12 @@ export interface WorkerOptions<StoreId = JobStore> {
|
|
|
96
96
|
readonly pollInterval?: Duration.Input | undefined;
|
|
97
97
|
/** How often to tick due repeatable-job schedules (default 15s). */
|
|
98
98
|
readonly scheduleSweepInterval?: Duration.Input | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* When set, sample `store.counts(queue)` for every registered queue into
|
|
101
|
+
* the `effect_mq_queue_depth` gauge at this cadence (default: off — depth
|
|
102
|
+
* sampling costs one store query per queue per tick).
|
|
103
|
+
*/
|
|
104
|
+
readonly queueMetricsInterval?: Duration.Input | undefined;
|
|
99
105
|
/** Identifier used in lock tokens (default: random). */
|
|
100
106
|
readonly id?: string | undefined;
|
|
101
107
|
}
|
package/dist/Worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAgB,OAAO,EAAY,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAmB,KAAK,
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"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"}
|
package/dist/Worker.js
CHANGED
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @since 0.1.0
|
|
16
16
|
*/
|
|
17
|
-
import { Cause, Clock, Context, Deferred, Duration, Effect, Exit, Fiber, FiberSet, Layer, Option, Result, Schedule, Schema, Scope as Scope_, Tracer } from "effect";
|
|
17
|
+
import { Cause, Clock, Context, Deferred, Duration, Effect, Exit, Fiber, FiberSet, Layer, Metric, Option, Result, Schedule, Schema, Scope as Scope_, Tracer } from "effect";
|
|
18
18
|
import { isJobStoreError, isMarkedUnrecoverable, JobId, JobStore, nextOccurrence, QueueName } from "./JobStore.js";
|
|
19
|
+
import * as Metrics from "./Metrics.js";
|
|
19
20
|
/**
|
|
20
21
|
* @since 0.1.0
|
|
21
22
|
*/
|
|
@@ -131,6 +132,14 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
131
132
|
attempt: record.attemptsMade + 1,
|
|
132
133
|
attemptsMax: record.attemptsMax
|
|
133
134
|
};
|
|
135
|
+
// One line per finished run: outcome counter + duration histogram
|
|
136
|
+
// (claim time to now, from the Effect Clock).
|
|
137
|
+
const recordRun = (outcome) => Effect.gen(function* () {
|
|
138
|
+
const finished = yield* Clock.currentTimeMillis;
|
|
139
|
+
const attributes = { name: record.name, queue: record.queue, outcome };
|
|
140
|
+
yield* Metric.update(Metrics.jobRuns.pipe(Metric.withAttributes(attributes)), 1);
|
|
141
|
+
yield* Metric.update(Metrics.jobRunDuration.pipe(Metric.withAttributes(attributes)), Math.max(0, finished - (record.processedAt ?? finished)));
|
|
142
|
+
});
|
|
134
143
|
return Effect.gen(function* () {
|
|
135
144
|
// The per-run time limit interrupts the handler internally; surface
|
|
136
145
|
// it as a defect so it flows through normal retry accounting.
|
|
@@ -147,14 +156,17 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
147
156
|
// keeps the child interruptible while the fork itself is masked.
|
|
148
157
|
const fiber = yield* Effect.forkChild(restore(handlerEffect));
|
|
149
158
|
inflight.set(record.id, { id: record.id, token, fiber });
|
|
159
|
+
const busy = Metrics.jobsInFlight.pipe(Metric.withAttributes({ queue: record.queue }));
|
|
160
|
+
yield* Metric.modify(busy, 1);
|
|
150
161
|
const exit = yield* Effect.exit(restore(Fiber.join(fiber)));
|
|
162
|
+
yield* Metric.modify(busy, -1);
|
|
151
163
|
inflight.delete(record.id);
|
|
152
164
|
const wasCancelled = cancelling.delete(record.id);
|
|
153
165
|
// A cancel-request interrupt is terminal: ack Cancelled (even if a
|
|
154
166
|
// shutdown races it — cancellation wins, the job must not revive).
|
|
155
167
|
if (wasCancelled && Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)) {
|
|
156
168
|
yield* ackSafely(store.ack(record.id, token, { _tag: "Cancelled" }), "ack");
|
|
157
|
-
return;
|
|
169
|
+
return yield* recordRun("cancelled");
|
|
158
170
|
}
|
|
159
171
|
// Distinguish worker shutdown from a handler that interrupted
|
|
160
172
|
// itself: entering an interruptible region while an external
|
|
@@ -166,6 +178,7 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
166
178
|
// without consuming an attempt.
|
|
167
179
|
yield* Fiber.interrupt(fiber);
|
|
168
180
|
yield* ackSafely(store.release(record.id, token), "release");
|
|
181
|
+
yield* recordRun("released");
|
|
169
182
|
return yield* Effect.interrupt;
|
|
170
183
|
}
|
|
171
184
|
// A handler that interrupted itself is a failed attempt, not a
|
|
@@ -194,6 +207,13 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
194
207
|
? { _tag: "Fail", exit: exitValue }
|
|
195
208
|
: routeFailure(record, exitValue);
|
|
196
209
|
yield* ackSafely(store.ack(record.id, token, outcome), "ack");
|
|
210
|
+
yield* recordRun(outcome._tag === "Complete"
|
|
211
|
+
? "completed"
|
|
212
|
+
: outcome._tag === "Retry"
|
|
213
|
+
? "retried"
|
|
214
|
+
: outcome._tag === "Cancelled"
|
|
215
|
+
? "cancelled"
|
|
216
|
+
: "failed");
|
|
197
217
|
});
|
|
198
218
|
});
|
|
199
219
|
// One loop iteration. The claim and everything after it run
|
|
@@ -213,6 +233,7 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
213
233
|
lockDurationMs
|
|
214
234
|
}));
|
|
215
235
|
if (result._tag === "Empty") {
|
|
236
|
+
yield* Metric.update(Metrics.claims.pipe(Metric.withAttributes({ queue, result: "empty" })), 1);
|
|
216
237
|
const now = yield* Clock.currentTimeMillis;
|
|
217
238
|
const timeout = result.nextRunAt !== undefined
|
|
218
239
|
? Math.max(0, Math.min(result.nextRunAt - now, pollMs))
|
|
@@ -223,6 +244,9 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
223
244
|
awaitPulse(observedPulse)
|
|
224
245
|
]));
|
|
225
246
|
}
|
|
247
|
+
yield* Metric.update(Metrics.claims.pipe(Metric.withAttributes({ queue, result: "claimed" })), 1);
|
|
248
|
+
const claimedAt = yield* Clock.currentTimeMillis;
|
|
249
|
+
yield* Metric.update(Metrics.jobWaitDuration.pipe(Metric.withAttributes({ name: result.job.name, queue })), Math.max(0, claimedAt - result.job.runAt));
|
|
226
250
|
yield* processJob(result.job, token, restore);
|
|
227
251
|
}));
|
|
228
252
|
const takerLoop = (queue) => takerIteration(queue).pipe(Effect.catchCause((cause) => Effect.logError(`effect-mq: worker iteration failed (queue "${queue}")`, cause)), Effect.forever);
|
|
@@ -245,13 +269,25 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
245
269
|
return;
|
|
246
270
|
const result = yield* retryStore(store.extendLocks(entries.map((entry) => ({ id: entry.id, token: entry.token })), lockDurationMs));
|
|
247
271
|
if (result.lost.length > 0) {
|
|
272
|
+
yield* Metric.update(Metrics.locksLost, result.lost.length);
|
|
248
273
|
yield* Effect.logWarning("effect-mq: failed to renew locks; jobs may run twice", result.lost);
|
|
274
|
+
// A lost lock stays lost: drop the flight so we neither renew nor
|
|
275
|
+
// recount it every heartbeat (the run's eventual ack surfaces
|
|
276
|
+
// LockLostError on its own).
|
|
277
|
+
for (const id of result.lost) {
|
|
278
|
+
inflight.delete(id);
|
|
279
|
+
}
|
|
249
280
|
}
|
|
250
281
|
// Honour cross-process cancel requests: interrupt the handler fiber;
|
|
251
282
|
// processJob acks the job as Cancelled.
|
|
252
283
|
for (const id of result.cancelRequested) {
|
|
253
284
|
const flight = inflight.get(id);
|
|
254
285
|
if (flight !== undefined) {
|
|
286
|
+
// The store re-reports the request every heartbeat until the ack
|
|
287
|
+
// lands; count the first delivery only.
|
|
288
|
+
if (!cancelling.has(id)) {
|
|
289
|
+
yield* Metric.update(Metrics.cancelInterrupts, 1);
|
|
290
|
+
}
|
|
255
291
|
cancelling.add(id);
|
|
256
292
|
// Delivery only — awaiting the handler's exit here would park the
|
|
257
293
|
// heartbeat behind arbitrary user finalizers and starve every other
|
|
@@ -265,6 +301,13 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
265
301
|
yield* Effect.sleep(stalledMs);
|
|
266
302
|
const recovered = yield* retryStore(store.recoverStalled({ maxStalledCount }));
|
|
267
303
|
if (recovered.length > 0) {
|
|
304
|
+
const failed = recovered.filter((entry) => entry.failed).length;
|
|
305
|
+
if (failed > 0) {
|
|
306
|
+
yield* Metric.update(Metrics.stalledRecovered.pipe(Metric.withAttributes({ outcome: "failed" })), failed);
|
|
307
|
+
}
|
|
308
|
+
if (recovered.length - failed > 0) {
|
|
309
|
+
yield* Metric.update(Metrics.stalledRecovered.pipe(Metric.withAttributes({ outcome: "requeued" })), recovered.length - failed);
|
|
310
|
+
}
|
|
268
311
|
yield* Effect.logWarning("effect-mq: recovered stalled jobs", recovered);
|
|
269
312
|
}
|
|
270
313
|
}).pipe(Effect.catchCause((cause) => Effect.logError("effect-mq: stalled sweep failed", cause)), Effect.forever);
|
|
@@ -279,7 +322,7 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
279
322
|
if (next === undefined) {
|
|
280
323
|
return yield* Effect.logError(`effect-mq: schedule "${schedule.key}" has an invalid cron/every configuration; skipping`);
|
|
281
324
|
}
|
|
282
|
-
yield* retryStore(store.enqueue({
|
|
325
|
+
const tick = yield* retryStore(store.enqueue({
|
|
283
326
|
id: JobId(`sched/${schedule.key}/${slot}`),
|
|
284
327
|
name: schedule.jobName,
|
|
285
328
|
queue: schedule.queue,
|
|
@@ -293,6 +336,9 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
293
336
|
dedupe: undefined,
|
|
294
337
|
delayMs: 0
|
|
295
338
|
}));
|
|
339
|
+
if (!tick.duplicate) {
|
|
340
|
+
yield* Metric.update(Metrics.scheduleTicks.pipe(Metric.withAttributes({ name: schedule.jobName })), 1);
|
|
341
|
+
}
|
|
296
342
|
yield* retryStore(store.advanceSchedule(schedule.key, slot, next));
|
|
297
343
|
});
|
|
298
344
|
// Each due schedule is swept in isolation so one poison row (bad cron,
|
|
@@ -307,6 +353,19 @@ export const make = (options) => Effect.gen(function* () {
|
|
|
307
353
|
yield* FiberSet.run(fibers, renewalLoop);
|
|
308
354
|
yield* FiberSet.run(fibers, stalledLoop);
|
|
309
355
|
yield* FiberSet.run(fibers, scheduleLoop);
|
|
356
|
+
if (options?.queueMetricsInterval !== undefined) {
|
|
357
|
+
const sampleMs = Duration.toMillis(options.queueMetricsInterval);
|
|
358
|
+
const depthLoop = Effect.gen(function* () {
|
|
359
|
+
yield* Effect.sleep(sampleMs);
|
|
360
|
+
for (const queue of startedQueues) {
|
|
361
|
+
const counts = yield* retryStore(store.counts(queue));
|
|
362
|
+
for (const [state, depth] of Object.entries(counts)) {
|
|
363
|
+
yield* Metric.update(Metrics.queueDepth.pipe(Metric.withAttributes({ queue, state })), depth);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}).pipe(Effect.catchCause((cause) => Effect.logWarning("effect-mq: queue depth sampling failed", cause)), Effect.forever);
|
|
367
|
+
yield* FiberSet.run(fibers, depthLoop);
|
|
368
|
+
}
|
|
310
369
|
// SAFETY: the public `register` signature declares Scope, the handler's R
|
|
311
370
|
// and the codec services as requirements; the implementation erases them
|
|
312
371
|
// (the trailing assertion below) because the handler runs with the
|
package/dist/Worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.js","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Worker.js","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,13 @@ export * as JobStore from "./JobStore.ts";
|
|
|
21
21
|
* @since 0.1.0
|
|
22
22
|
*/
|
|
23
23
|
export * as MemoryJobStore from "./MemoryJobStore.ts";
|
|
24
|
+
/**
|
|
25
|
+
* The metrics effect-mq emits (Effect `Metric` instruments) — process-local,
|
|
26
|
+
* exported by your observability stack.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.3.1
|
|
29
|
+
*/
|
|
30
|
+
export * as Metrics from "./Metrics.ts";
|
|
24
31
|
/**
|
|
25
32
|
* The worker runtime: `Worker.layer` and handler registration.
|
|
26
33
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;GAIG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;GAIG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,13 @@ export * as JobStore from "./JobStore.js";
|
|
|
21
21
|
* @since 0.1.0
|
|
22
22
|
*/
|
|
23
23
|
export * as MemoryJobStore from "./MemoryJobStore.js";
|
|
24
|
+
/**
|
|
25
|
+
* The metrics effect-mq emits (Effect `Metric` instruments) — process-local,
|
|
26
|
+
* exported by your observability stack.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.3.1
|
|
29
|
+
*/
|
|
30
|
+
export * as Metrics from "./Metrics.js";
|
|
24
31
|
/**
|
|
25
32
|
* The worker runtime: `Worker.layer` and handler registration.
|
|
26
33
|
*
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;GAIG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;;;GAIG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;;GAIG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;;;GAIG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-mq",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Effect-native background jobs: schema-first definitions, storage-agnostic queue core, worker runtime, and a Postgres store through drizzle.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Adam Rankin",
|
package/src/Job.ts
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
*
|
|
31
31
|
* @since 0.1.0
|
|
32
32
|
*/
|
|
33
|
-
import { Clock, type Context, Duration, Effect, type Exit, Layer, Option, Predicate, Schedule, Schema } from "effect"
|
|
33
|
+
import { Clock, type Context, Duration, Effect, type Exit, Layer, Metric, Option, Predicate, Schedule, Schema } from "effect"
|
|
34
34
|
import {
|
|
35
35
|
type BackoffPolicy,
|
|
36
36
|
type DedupePolicy,
|
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
type Service as StoreService,
|
|
52
52
|
unrecoverable
|
|
53
53
|
} from "./JobStore.ts"
|
|
54
|
+
import * as Metrics from "./Metrics.ts"
|
|
54
55
|
|
|
55
56
|
export {
|
|
56
57
|
/**
|
|
@@ -488,6 +489,7 @@ const Proto = {
|
|
|
488
489
|
const dedupe = normalizeDedupe(
|
|
489
490
|
options?.dedupe ?? this.dedupe?.(payload)
|
|
490
491
|
)
|
|
492
|
+
const queue = options?.queue !== undefined ? QueueName(options.queue) : this.queue
|
|
491
493
|
return Schema.encodeEffect(this.payloadJsonSchema)(payload).pipe(
|
|
492
494
|
Effect.orDie,
|
|
493
495
|
Effect.flatMap((encoded) =>
|
|
@@ -495,9 +497,7 @@ const Proto = {
|
|
|
495
497
|
store.enqueue({
|
|
496
498
|
id,
|
|
497
499
|
name: this._tag,
|
|
498
|
-
queue
|
|
499
|
-
? QueueName(options.queue)
|
|
500
|
-
: this.queue,
|
|
500
|
+
queue,
|
|
501
501
|
payload: encoded,
|
|
502
502
|
metadata,
|
|
503
503
|
priority: options?.priority ?? this.defaults.priority,
|
|
@@ -518,6 +518,18 @@ const Proto = {
|
|
|
518
518
|
}))
|
|
519
519
|
),
|
|
520
520
|
Effect.orDie,
|
|
521
|
+
Effect.tap((result) =>
|
|
522
|
+
Metric.update(
|
|
523
|
+
Metrics.jobsEnqueued.pipe(
|
|
524
|
+
Metric.withAttributes({
|
|
525
|
+
name: this._tag,
|
|
526
|
+
queue,
|
|
527
|
+
duplicate: result.duplicate ? "true" : "false"
|
|
528
|
+
})
|
|
529
|
+
),
|
|
530
|
+
1
|
|
531
|
+
)
|
|
532
|
+
),
|
|
521
533
|
Effect.map((result) => result.id)
|
|
522
534
|
)
|
|
523
535
|
}).pipe(
|
package/src/Metrics.ts
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The metrics effect-mq emits, as Effect `Metric` instruments.
|
|
3
|
+
*
|
|
4
|
+
* Metrics are **process-local operational signal, not persisted state**:
|
|
5
|
+
* they live in the Effect metric registry of the emitting process and are
|
|
6
|
+
* exported by whatever exporter the application runs (the Otlp modules from
|
|
7
|
+
* `effect/unstable/observability`, `@effect/opentelemetry`, a Prometheus
|
|
8
|
+
* scraper, ...). Retention belongs to that metrics backend. The queue's
|
|
9
|
+
* *durable* analogues remain in the store — `store.counts()` for live depth
|
|
10
|
+
* and the attempt ledger for per-run history — and stay queryable forever.
|
|
11
|
+
*
|
|
12
|
+
* Producers emit `jobsEnqueued`; workers emit the rest from their loops.
|
|
13
|
+
* Everything is tagged with low-cardinality attributes only (job name,
|
|
14
|
+
* queue, outcome/result) — never ids or keys.
|
|
15
|
+
*
|
|
16
|
+
* This module is exported so applications can read the same instruments
|
|
17
|
+
* (e.g. `Metric.value(Metrics.jobRuns.pipe(Metric.withAttributes({...})))`)
|
|
18
|
+
* or reference the names when building dashboards.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.3.1
|
|
21
|
+
*/
|
|
22
|
+
import { Metric } from "effect"
|
|
23
|
+
|
|
24
|
+
/** Milliseconds, 5ms .. ~55 minutes. */
|
|
25
|
+
const durationBoundaries = Metric.exponentialBoundaries({ start: 5, factor: 2, count: 20 })
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Producer-side enqueues. Tags: `name`, `queue`, `duplicate` ("true" when
|
|
29
|
+
* the enqueue deduplicated against an existing id or dedup key).
|
|
30
|
+
*
|
|
31
|
+
* @since 0.3.1
|
|
32
|
+
*/
|
|
33
|
+
export const jobsEnqueued = Metric.counter("effect_mq_jobs_enqueued", {
|
|
34
|
+
description: "Jobs submitted via Job.enqueue/execute, including deduplicated submissions"
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Finished runs, one per handler attempt. Tags: `name`, `queue`, `outcome`
|
|
39
|
+
* (completed | retried | failed | cancelled | released).
|
|
40
|
+
*
|
|
41
|
+
* @since 0.3.1
|
|
42
|
+
*/
|
|
43
|
+
export const jobRuns = Metric.counter("effect_mq_job_runs", {
|
|
44
|
+
description: "Handler runs by outcome (released = handed back on worker shutdown)"
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Handler execution time in milliseconds (claim to ack). Tags: `name`,
|
|
49
|
+
* `queue`, `outcome`.
|
|
50
|
+
*
|
|
51
|
+
* @since 0.3.1
|
|
52
|
+
*/
|
|
53
|
+
export const jobRunDuration = Metric.histogram("effect_mq_job_run_duration_ms", {
|
|
54
|
+
description: "Handler execution time in milliseconds, claim to ack",
|
|
55
|
+
boundaries: durationBoundaries
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Queue latency in milliseconds: how long a job was runnable (past its
|
|
60
|
+
* `runAt`) before a worker claimed it. Tags: `name`, `queue`.
|
|
61
|
+
*
|
|
62
|
+
* @since 0.3.1
|
|
63
|
+
*/
|
|
64
|
+
export const jobWaitDuration = Metric.histogram("effect_mq_job_wait_duration_ms", {
|
|
65
|
+
description: "Time between a job becoming runnable and its claim, in milliseconds",
|
|
66
|
+
boundaries: durationBoundaries
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Claim attempts by result. Tags: `queue`, `result` (claimed | empty).
|
|
71
|
+
* A high empty ratio means takers outnumber work.
|
|
72
|
+
*
|
|
73
|
+
* @since 0.3.1
|
|
74
|
+
*/
|
|
75
|
+
export const claims = Metric.counter("effect_mq_claims", {
|
|
76
|
+
description: "Store claim attempts by result"
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Handlers currently executing. Tags: `queue`.
|
|
81
|
+
*
|
|
82
|
+
* @since 0.3.1
|
|
83
|
+
*/
|
|
84
|
+
export const jobsInFlight = Metric.gauge("effect_mq_jobs_in_flight", {
|
|
85
|
+
description: "Handlers currently executing"
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Queue depth by state, sampled from `store.counts()` when
|
|
90
|
+
* `Worker.layer({ queueMetricsInterval })` is set. Tags: `queue`, `state`.
|
|
91
|
+
*
|
|
92
|
+
* @since 0.3.1
|
|
93
|
+
*/
|
|
94
|
+
export const queueDepth = Metric.gauge("effect_mq_queue_depth", {
|
|
95
|
+
description: "Jobs per state, sampled from store.counts() per registered queue"
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Locks found gone at renewal, counted once per lost lock (the job may run
|
|
100
|
+
* twice). Tags: none.
|
|
101
|
+
*
|
|
102
|
+
* @since 0.3.1
|
|
103
|
+
*/
|
|
104
|
+
export const locksLost = Metric.counter("effect_mq_locks_lost", {
|
|
105
|
+
description: "Locks found lost at heartbeat renewal, once per lock"
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Cross-process cancel requests delivered to running handlers by the
|
|
110
|
+
* heartbeat. Tags: none.
|
|
111
|
+
*
|
|
112
|
+
* @since 0.3.1
|
|
113
|
+
*/
|
|
114
|
+
export const cancelInterrupts = Metric.counter("effect_mq_cancel_interrupts", {
|
|
115
|
+
description: "Running handlers interrupted by a cancel request"
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Jobs recovered by the stalled sweep. Tags: `outcome` (requeued | failed).
|
|
120
|
+
*
|
|
121
|
+
* @since 0.3.1
|
|
122
|
+
*/
|
|
123
|
+
export const stalledRecovered = Metric.counter("effect_mq_stalled_recovered", {
|
|
124
|
+
description: "Stalled jobs recovered (requeued) or failed past the stall limit"
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Repeatable-schedule occurrences enqueued by this worker's sweep. Tags:
|
|
129
|
+
* `name` (the job name).
|
|
130
|
+
*
|
|
131
|
+
* @since 0.3.1
|
|
132
|
+
*/
|
|
133
|
+
export const scheduleTicks = Metric.counter("effect_mq_schedule_ticks", {
|
|
134
|
+
description: "Repeatable-schedule occurrences enqueued by the schedule sweep"
|
|
135
|
+
})
|
package/src/Worker.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @since 0.1.0
|
|
16
16
|
*/
|
|
17
|
-
import { Cause, Clock, Context, Deferred, Duration, Effect, Exit, Fiber, FiberSet, Layer, Option, Result, Schedule, Schema, type Scope, Scope as Scope_, Tracer } from "effect"
|
|
17
|
+
import { Cause, Clock, Context, Deferred, Duration, Effect, Exit, Fiber, FiberSet, Layer, Metric, Option, Result, Schedule, Schema, type Scope, Scope as Scope_, Tracer } from "effect"
|
|
18
18
|
import {
|
|
19
19
|
type AckOutcome,
|
|
20
20
|
type BackoffPolicy,
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
type ScheduleRecord,
|
|
32
32
|
type Service as StoreService
|
|
33
33
|
} from "./JobStore.ts"
|
|
34
|
+
import * as Metrics from "./Metrics.ts"
|
|
34
35
|
|
|
35
36
|
/**
|
|
36
37
|
* Information about the currently running attempt, passed to handlers as the
|
|
@@ -117,6 +118,12 @@ export interface WorkerOptions<StoreId = JobStore> {
|
|
|
117
118
|
readonly pollInterval?: Duration.Input | undefined
|
|
118
119
|
/** How often to tick due repeatable-job schedules (default 15s). */
|
|
119
120
|
readonly scheduleSweepInterval?: Duration.Input | undefined
|
|
121
|
+
/**
|
|
122
|
+
* When set, sample `store.counts(queue)` for every registered queue into
|
|
123
|
+
* the `effect_mq_queue_depth` gauge at this cadence (default: off — depth
|
|
124
|
+
* sampling costs one store query per queue per tick).
|
|
125
|
+
*/
|
|
126
|
+
readonly queueMetricsInterval?: Duration.Input | undefined
|
|
120
127
|
/** Identifier used in lock tokens (default: random). */
|
|
121
128
|
readonly id?: string | undefined
|
|
122
129
|
}
|
|
@@ -311,6 +318,18 @@ export const make = <StoreId = JobStore>(
|
|
|
311
318
|
attempt: record.attemptsMade + 1,
|
|
312
319
|
attemptsMax: record.attemptsMax
|
|
313
320
|
}
|
|
321
|
+
// One line per finished run: outcome counter + duration histogram
|
|
322
|
+
// (claim time to now, from the Effect Clock).
|
|
323
|
+
const recordRun = (outcome: string) =>
|
|
324
|
+
Effect.gen(function*() {
|
|
325
|
+
const finished = yield* Clock.currentTimeMillis
|
|
326
|
+
const attributes = { name: record.name, queue: record.queue, outcome }
|
|
327
|
+
yield* Metric.update(Metrics.jobRuns.pipe(Metric.withAttributes(attributes)), 1)
|
|
328
|
+
yield* Metric.update(
|
|
329
|
+
Metrics.jobRunDuration.pipe(Metric.withAttributes(attributes)),
|
|
330
|
+
Math.max(0, finished - (record.processedAt ?? finished))
|
|
331
|
+
)
|
|
332
|
+
})
|
|
314
333
|
return Effect.gen(function*() {
|
|
315
334
|
// The per-run time limit interrupts the handler internally; surface
|
|
316
335
|
// it as a defect so it flows through normal retry accounting.
|
|
@@ -334,7 +353,10 @@ export const make = <StoreId = JobStore>(
|
|
|
334
353
|
// keeps the child interruptible while the fork itself is masked.
|
|
335
354
|
const fiber = yield* Effect.forkChild(restore(handlerEffect))
|
|
336
355
|
inflight.set(record.id, { id: record.id, token, fiber })
|
|
356
|
+
const busy = Metrics.jobsInFlight.pipe(Metric.withAttributes({ queue: record.queue }))
|
|
357
|
+
yield* Metric.modify(busy, 1)
|
|
337
358
|
const exit = yield* Effect.exit(restore(Fiber.join(fiber)))
|
|
359
|
+
yield* Metric.modify(busy, -1)
|
|
338
360
|
inflight.delete(record.id)
|
|
339
361
|
const wasCancelled = cancelling.delete(record.id)
|
|
340
362
|
|
|
@@ -342,7 +364,7 @@ export const make = <StoreId = JobStore>(
|
|
|
342
364
|
// shutdown races it — cancellation wins, the job must not revive).
|
|
343
365
|
if (wasCancelled && Exit.isFailure(exit) && Cause.hasInterruptsOnly(exit.cause)) {
|
|
344
366
|
yield* ackSafely(store.ack(record.id, token, { _tag: "Cancelled" }), "ack")
|
|
345
|
-
return
|
|
367
|
+
return yield* recordRun("cancelled")
|
|
346
368
|
}
|
|
347
369
|
|
|
348
370
|
// Distinguish worker shutdown from a handler that interrupted
|
|
@@ -355,6 +377,7 @@ export const make = <StoreId = JobStore>(
|
|
|
355
377
|
// without consuming an attempt.
|
|
356
378
|
yield* Fiber.interrupt(fiber)
|
|
357
379
|
yield* ackSafely(store.release(record.id, token), "release")
|
|
380
|
+
yield* recordRun("released")
|
|
358
381
|
return yield* Effect.interrupt
|
|
359
382
|
}
|
|
360
383
|
|
|
@@ -396,6 +419,15 @@ export const make = <StoreId = JobStore>(
|
|
|
396
419
|
? { _tag: "Fail", exit: exitValue }
|
|
397
420
|
: routeFailure(record, exitValue)
|
|
398
421
|
yield* ackSafely(store.ack(record.id, token, outcome), "ack")
|
|
422
|
+
yield* recordRun(
|
|
423
|
+
outcome._tag === "Complete"
|
|
424
|
+
? "completed"
|
|
425
|
+
: outcome._tag === "Retry"
|
|
426
|
+
? "retried"
|
|
427
|
+
: outcome._tag === "Cancelled"
|
|
428
|
+
? "cancelled"
|
|
429
|
+
: "failed"
|
|
430
|
+
)
|
|
399
431
|
})
|
|
400
432
|
})
|
|
401
433
|
|
|
@@ -420,6 +452,10 @@ export const make = <StoreId = JobStore>(
|
|
|
420
452
|
lockDurationMs
|
|
421
453
|
}))
|
|
422
454
|
if (result._tag === "Empty") {
|
|
455
|
+
yield* Metric.update(
|
|
456
|
+
Metrics.claims.pipe(Metric.withAttributes({ queue, result: "empty" })),
|
|
457
|
+
1
|
|
458
|
+
)
|
|
423
459
|
const now = yield* Clock.currentTimeMillis
|
|
424
460
|
const timeout = result.nextRunAt !== undefined
|
|
425
461
|
? Math.max(0, Math.min(result.nextRunAt - now, pollMs))
|
|
@@ -430,6 +466,17 @@ export const make = <StoreId = JobStore>(
|
|
|
430
466
|
awaitPulse(observedPulse)
|
|
431
467
|
]))
|
|
432
468
|
}
|
|
469
|
+
yield* Metric.update(
|
|
470
|
+
Metrics.claims.pipe(Metric.withAttributes({ queue, result: "claimed" })),
|
|
471
|
+
1
|
|
472
|
+
)
|
|
473
|
+
const claimedAt = yield* Clock.currentTimeMillis
|
|
474
|
+
yield* Metric.update(
|
|
475
|
+
Metrics.jobWaitDuration.pipe(
|
|
476
|
+
Metric.withAttributes({ name: result.job.name, queue })
|
|
477
|
+
),
|
|
478
|
+
Math.max(0, claimedAt - result.job.runAt)
|
|
479
|
+
)
|
|
433
480
|
yield* processJob(result.job, token, restore)
|
|
434
481
|
})
|
|
435
482
|
)
|
|
@@ -475,16 +522,28 @@ export const make = <StoreId = JobStore>(
|
|
|
475
522
|
lockDurationMs
|
|
476
523
|
))
|
|
477
524
|
if (result.lost.length > 0) {
|
|
525
|
+
yield* Metric.update(Metrics.locksLost, result.lost.length)
|
|
478
526
|
yield* Effect.logWarning(
|
|
479
527
|
"effect-mq: failed to renew locks; jobs may run twice",
|
|
480
528
|
result.lost
|
|
481
529
|
)
|
|
530
|
+
// A lost lock stays lost: drop the flight so we neither renew nor
|
|
531
|
+
// recount it every heartbeat (the run's eventual ack surfaces
|
|
532
|
+
// LockLostError on its own).
|
|
533
|
+
for (const id of result.lost) {
|
|
534
|
+
inflight.delete(id)
|
|
535
|
+
}
|
|
482
536
|
}
|
|
483
537
|
// Honour cross-process cancel requests: interrupt the handler fiber;
|
|
484
538
|
// processJob acks the job as Cancelled.
|
|
485
539
|
for (const id of result.cancelRequested) {
|
|
486
540
|
const flight = inflight.get(id)
|
|
487
541
|
if (flight !== undefined) {
|
|
542
|
+
// The store re-reports the request every heartbeat until the ack
|
|
543
|
+
// lands; count the first delivery only.
|
|
544
|
+
if (!cancelling.has(id)) {
|
|
545
|
+
yield* Metric.update(Metrics.cancelInterrupts, 1)
|
|
546
|
+
}
|
|
488
547
|
cancelling.add(id)
|
|
489
548
|
// Delivery only — awaiting the handler's exit here would park the
|
|
490
549
|
// heartbeat behind arbitrary user finalizers and starve every other
|
|
@@ -502,6 +561,19 @@ export const make = <StoreId = JobStore>(
|
|
|
502
561
|
yield* Effect.sleep(stalledMs)
|
|
503
562
|
const recovered = yield* retryStore(store.recoverStalled({ maxStalledCount }))
|
|
504
563
|
if (recovered.length > 0) {
|
|
564
|
+
const failed = recovered.filter((entry) => entry.failed).length
|
|
565
|
+
if (failed > 0) {
|
|
566
|
+
yield* Metric.update(
|
|
567
|
+
Metrics.stalledRecovered.pipe(Metric.withAttributes({ outcome: "failed" })),
|
|
568
|
+
failed
|
|
569
|
+
)
|
|
570
|
+
}
|
|
571
|
+
if (recovered.length - failed > 0) {
|
|
572
|
+
yield* Metric.update(
|
|
573
|
+
Metrics.stalledRecovered.pipe(Metric.withAttributes({ outcome: "requeued" })),
|
|
574
|
+
recovered.length - failed
|
|
575
|
+
)
|
|
576
|
+
}
|
|
505
577
|
yield* Effect.logWarning("effect-mq: recovered stalled jobs", recovered)
|
|
506
578
|
}
|
|
507
579
|
}).pipe(
|
|
@@ -523,7 +595,7 @@ export const make = <StoreId = JobStore>(
|
|
|
523
595
|
`effect-mq: schedule "${schedule.key}" has an invalid cron/every configuration; skipping`
|
|
524
596
|
)
|
|
525
597
|
}
|
|
526
|
-
yield* retryStore(store.enqueue({
|
|
598
|
+
const tick = yield* retryStore(store.enqueue({
|
|
527
599
|
id: JobId(`sched/${schedule.key}/${slot}`),
|
|
528
600
|
name: schedule.jobName,
|
|
529
601
|
queue: schedule.queue,
|
|
@@ -537,6 +609,12 @@ export const make = <StoreId = JobStore>(
|
|
|
537
609
|
dedupe: undefined,
|
|
538
610
|
delayMs: 0
|
|
539
611
|
}))
|
|
612
|
+
if (!tick.duplicate) {
|
|
613
|
+
yield* Metric.update(
|
|
614
|
+
Metrics.scheduleTicks.pipe(Metric.withAttributes({ name: schedule.jobName })),
|
|
615
|
+
1
|
|
616
|
+
)
|
|
617
|
+
}
|
|
540
618
|
yield* retryStore(store.advanceSchedule(schedule.key, slot, next))
|
|
541
619
|
})
|
|
542
620
|
|
|
@@ -561,6 +639,26 @@ export const make = <StoreId = JobStore>(
|
|
|
561
639
|
yield* FiberSet.run(fibers, stalledLoop)
|
|
562
640
|
yield* FiberSet.run(fibers, scheduleLoop)
|
|
563
641
|
|
|
642
|
+
if (options?.queueMetricsInterval !== undefined) {
|
|
643
|
+
const sampleMs = Duration.toMillis(options.queueMetricsInterval)
|
|
644
|
+
const depthLoop = Effect.gen(function*() {
|
|
645
|
+
yield* Effect.sleep(sampleMs)
|
|
646
|
+
for (const queue of startedQueues) {
|
|
647
|
+
const counts = yield* retryStore(store.counts(queue))
|
|
648
|
+
for (const [state, depth] of Object.entries(counts)) {
|
|
649
|
+
yield* Metric.update(
|
|
650
|
+
Metrics.queueDepth.pipe(Metric.withAttributes({ queue, state })),
|
|
651
|
+
depth
|
|
652
|
+
)
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}).pipe(
|
|
656
|
+
Effect.catchCause((cause) => Effect.logWarning("effect-mq: queue depth sampling failed", cause)),
|
|
657
|
+
Effect.forever
|
|
658
|
+
)
|
|
659
|
+
yield* FiberSet.run(fibers, depthLoop)
|
|
660
|
+
}
|
|
661
|
+
|
|
564
662
|
// SAFETY: the public `register` signature declares Scope, the handler's R
|
|
565
663
|
// and the codec services as requirements; the implementation erases them
|
|
566
664
|
// (the trailing assertion below) because the handler runs with the
|
package/src/index.ts
CHANGED
|
@@ -25,6 +25,14 @@ export * as JobStore from "./JobStore.ts"
|
|
|
25
25
|
*/
|
|
26
26
|
export * as MemoryJobStore from "./MemoryJobStore.ts"
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The metrics effect-mq emits (Effect `Metric` instruments) — process-local,
|
|
30
|
+
* exported by your observability stack.
|
|
31
|
+
*
|
|
32
|
+
* @since 0.3.1
|
|
33
|
+
*/
|
|
34
|
+
export * as Metrics from "./Metrics.ts"
|
|
35
|
+
|
|
28
36
|
/**
|
|
29
37
|
* The worker runtime: `Worker.layer` and handler registration.
|
|
30
38
|
*
|