effect-mq 0.3.0 → 0.3.2
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 +58 -1
- 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/dist/testing/TestJobStore.d.ts +95 -0
- package/dist/testing/TestJobStore.d.ts.map +1 -0
- package/dist/testing/TestJobStore.js +88 -0
- package/dist/testing/TestJobStore.js.map +1 -0
- package/dist/testing/index.d.ts +6 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +6 -0
- package/dist/testing/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/src/testing/TestJobStore.ts +143 -0
- package/src/testing/index.ts +7 -0
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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A test harness for asserting what your services enqueue, without running
|
|
3
|
+
* a worker.
|
|
4
|
+
*
|
|
5
|
+
* Provide `TestJobStore.layer` in a unit test and jobs enqueued by the code
|
|
6
|
+
* under test simply accumulate in `waiting`/`delayed` (nothing claims them).
|
|
7
|
+
* `enqueuedOf` returns them with payloads **decoded through the job's own
|
|
8
|
+
* schema** — you assert against the typed values your service produced, not
|
|
9
|
+
* the encoded JSON the store persists:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { TestJobStore } from "effect-mq/testing"
|
|
13
|
+
*
|
|
14
|
+
* it.effect("signup enqueues a welcome email", () =>
|
|
15
|
+
* Effect.gen(function*() {
|
|
16
|
+
* yield* SignupService.register({ email: "ada@example.com" })
|
|
17
|
+
*
|
|
18
|
+
* const emails = yield* TestJobStore.enqueuedOf(SendEmail)
|
|
19
|
+
* expect(emails).toHaveLength(1)
|
|
20
|
+
* expect(emails[0]?.payload.to).toBe("ada@example.com")
|
|
21
|
+
* expect(emails[0]?.state).toBe("waiting")
|
|
22
|
+
* }).pipe(Effect.provide(TestJobStore.layer)))
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Jobs bound to named stores use `TestJobStore.layerFor(Durable)` instead.
|
|
26
|
+
* The raw `JobStore` service is also exposed (as `.store`) for advanced
|
|
27
|
+
* scenarios — simulating claims/acks, reading `counts()`, and so on.
|
|
28
|
+
*
|
|
29
|
+
* @since 0.3.2
|
|
30
|
+
*/
|
|
31
|
+
import * as JobStore from "../JobStore.ts";
|
|
32
|
+
import { Context, Effect, Layer, Schema } from "effect";
|
|
33
|
+
/**
|
|
34
|
+
* The minimal structural view of a `Job.make` class that `enqueuedOf`
|
|
35
|
+
* needs: its tag and its JSON payload codec.
|
|
36
|
+
*
|
|
37
|
+
* @since 0.3.2
|
|
38
|
+
*/
|
|
39
|
+
export interface AnyJobDefinition {
|
|
40
|
+
readonly _tag: string;
|
|
41
|
+
readonly payloadJsonSchema: Schema.Top & {
|
|
42
|
+
readonly DecodingServices: never;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A stored job with its payload decoded back to the definition's payload
|
|
47
|
+
* type.
|
|
48
|
+
*
|
|
49
|
+
* @since 0.3.2
|
|
50
|
+
*/
|
|
51
|
+
export interface EnqueuedJob<Payload> extends Omit<JobStore.JobRecord, "payload"> {
|
|
52
|
+
readonly payload: Payload;
|
|
53
|
+
}
|
|
54
|
+
declare const TestJobStore_base: Context.ServiceClass<TestJobStore, "effect-mq/testing/TestJobStore", {
|
|
55
|
+
store: JobStore.Service;
|
|
56
|
+
enqueued: (name?: string) => Effect.Effect<JobStore.JobRecord[], never, never>;
|
|
57
|
+
enqueuedOf: <J extends AnyJobDefinition>(job: J) => Effect.Effect<EnqueuedJob<J["payloadJsonSchema"]["Type"]>[], never, never>;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Inspection API over the test store. `enqueued(name?)` returns raw records
|
|
61
|
+
* oldest-first; `enqueuedOf(JobClass)` additionally decodes payloads through
|
|
62
|
+
* the definition's schema.
|
|
63
|
+
*
|
|
64
|
+
* @since 0.3.2
|
|
65
|
+
*/
|
|
66
|
+
export declare class TestJobStore extends TestJobStore_base {
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A fresh in-memory store provided as BOTH the default `JobStore` (for the
|
|
70
|
+
* code under test) and the `TestJobStore` inspection service (for the
|
|
71
|
+
* assertions).
|
|
72
|
+
*
|
|
73
|
+
* @since 0.3.2
|
|
74
|
+
*/
|
|
75
|
+
export declare const layer: Layer.Layer<JobStore.JobStore | TestJobStore>;
|
|
76
|
+
/**
|
|
77
|
+
* Like `layer`, for jobs bound to a `JobStore.named(...)` key.
|
|
78
|
+
*
|
|
79
|
+
* @since 0.3.2
|
|
80
|
+
*/
|
|
81
|
+
export declare const layerFor: <Id>(store: Context.Key<Id, JobStore.Service>) => Layer.Layer<Id | TestJobStore>;
|
|
82
|
+
/**
|
|
83
|
+
* Convenience accessors so tests don't have to `yield* TestJobStore` first.
|
|
84
|
+
*
|
|
85
|
+
* @since 0.3.2
|
|
86
|
+
*/
|
|
87
|
+
export declare const enqueuedOf: <J extends AnyJobDefinition>(job: J) => Effect.Effect<Array<EnqueuedJob<J["payloadJsonSchema"]["Type"]>>, never, TestJobStore>;
|
|
88
|
+
/**
|
|
89
|
+
* Raw records (optionally filtered by job name), oldest-first.
|
|
90
|
+
*
|
|
91
|
+
* @since 0.3.2
|
|
92
|
+
*/
|
|
93
|
+
export declare const enqueued: (name?: string) => Effect.Effect<Array<JobStore.JobRecord>, never, TestJobStore>;
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=TestJobStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestJobStore.d.ts","sourceRoot":"","sources":["../../src/testing/TestJobStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,GAAG;QAAE,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAA;KAAE,CAAA;CAC9E;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW,CAAC,OAAO,CAAE,SAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;;;sBAmBmB,MAAM;iBACX,CAAC,SAAS,gBAAgB,OAAO,CAAC;;AAWjD;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,iBAEjC;CAAG;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,YAAY,CAK/D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,EAAE,SAClB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,KACvC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,YAAY,CAM7B,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,gBAAgB,OAC9C,CAAC,KACL,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAC5B,CAAA;AAE5D;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UACZ,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,CACJ,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A test harness for asserting what your services enqueue, without running
|
|
3
|
+
* a worker.
|
|
4
|
+
*
|
|
5
|
+
* Provide `TestJobStore.layer` in a unit test and jobs enqueued by the code
|
|
6
|
+
* under test simply accumulate in `waiting`/`delayed` (nothing claims them).
|
|
7
|
+
* `enqueuedOf` returns them with payloads **decoded through the job's own
|
|
8
|
+
* schema** — you assert against the typed values your service produced, not
|
|
9
|
+
* the encoded JSON the store persists:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { TestJobStore } from "effect-mq/testing"
|
|
13
|
+
*
|
|
14
|
+
* it.effect("signup enqueues a welcome email", () =>
|
|
15
|
+
* Effect.gen(function*() {
|
|
16
|
+
* yield* SignupService.register({ email: "ada@example.com" })
|
|
17
|
+
*
|
|
18
|
+
* const emails = yield* TestJobStore.enqueuedOf(SendEmail)
|
|
19
|
+
* expect(emails).toHaveLength(1)
|
|
20
|
+
* expect(emails[0]?.payload.to).toBe("ada@example.com")
|
|
21
|
+
* expect(emails[0]?.state).toBe("waiting")
|
|
22
|
+
* }).pipe(Effect.provide(TestJobStore.layer)))
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Jobs bound to named stores use `TestJobStore.layerFor(Durable)` instead.
|
|
26
|
+
* The raw `JobStore` service is also exposed (as `.store`) for advanced
|
|
27
|
+
* scenarios — simulating claims/acks, reading `counts()`, and so on.
|
|
28
|
+
*
|
|
29
|
+
* @since 0.3.2
|
|
30
|
+
*/
|
|
31
|
+
import * as JobStore from "../JobStore.js";
|
|
32
|
+
import * as MemoryJobStore from "../MemoryJobStore.js";
|
|
33
|
+
import { Context, Effect, Layer, Schema } from "effect";
|
|
34
|
+
const drainList = (store, name) => Effect.gen(function* () {
|
|
35
|
+
const all = [];
|
|
36
|
+
let cursor = undefined;
|
|
37
|
+
while (true) {
|
|
38
|
+
const page = yield* store.list({ name, cursor, limit: 200 }).pipe(Effect.orDie);
|
|
39
|
+
all.push(...page.items);
|
|
40
|
+
if (page.cursor === undefined)
|
|
41
|
+
break;
|
|
42
|
+
cursor = page.cursor;
|
|
43
|
+
}
|
|
44
|
+
// list() is newest-first; flip to oldest-first for natural reading.
|
|
45
|
+
// Ties (same-instant enqueues) order by id, not submission order.
|
|
46
|
+
return all.toReversed();
|
|
47
|
+
});
|
|
48
|
+
const makeApi = (store) => ({
|
|
49
|
+
store,
|
|
50
|
+
enqueued: (name) => drainList(store, name),
|
|
51
|
+
enqueuedOf: (job) => drainList(store, job._tag).pipe(Effect.flatMap(Effect.forEach((record) => Schema.decodeUnknownEffect(job.payloadJsonSchema)(record.payload).pipe(Effect.orDie, Effect.map((payload) => ({ ...record, payload }))))))
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Inspection API over the test store. `enqueued(name?)` returns raw records
|
|
55
|
+
* oldest-first; `enqueuedOf(JobClass)` additionally decodes payloads through
|
|
56
|
+
* the definition's schema.
|
|
57
|
+
*
|
|
58
|
+
* @since 0.3.2
|
|
59
|
+
*/
|
|
60
|
+
export class TestJobStore extends Context.Service()("effect-mq/testing/TestJobStore") {
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A fresh in-memory store provided as BOTH the default `JobStore` (for the
|
|
64
|
+
* code under test) and the `TestJobStore` inspection service (for the
|
|
65
|
+
* assertions).
|
|
66
|
+
*
|
|
67
|
+
* @since 0.3.2
|
|
68
|
+
*/
|
|
69
|
+
export const layer = Layer.effectContext(Effect.map(MemoryJobStore.makeWith(), (store) => Context.make(JobStore.JobStore, store).pipe(Context.add(TestJobStore, TestJobStore.of(makeApi(store))))));
|
|
70
|
+
/**
|
|
71
|
+
* Like `layer`, for jobs bound to a `JobStore.named(...)` key.
|
|
72
|
+
*
|
|
73
|
+
* @since 0.3.2
|
|
74
|
+
*/
|
|
75
|
+
export const layerFor = (store) => Layer.effectContext(Effect.map(MemoryJobStore.makeWith(), (memory) => Context.make(store, memory).pipe(Context.add(TestJobStore, TestJobStore.of(makeApi(memory))))));
|
|
76
|
+
/**
|
|
77
|
+
* Convenience accessors so tests don't have to `yield* TestJobStore` first.
|
|
78
|
+
*
|
|
79
|
+
* @since 0.3.2
|
|
80
|
+
*/
|
|
81
|
+
export const enqueuedOf = (job) => Effect.flatMap(TestJobStore, (api) => api.enqueuedOf(job));
|
|
82
|
+
/**
|
|
83
|
+
* Raw records (optionally filtered by job name), oldest-first.
|
|
84
|
+
*
|
|
85
|
+
* @since 0.3.2
|
|
86
|
+
*/
|
|
87
|
+
export const enqueued = (name) => Effect.flatMap(TestJobStore, (api) => api.enqueued(name));
|
|
88
|
+
//# sourceMappingURL=TestJobStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestJobStore.js","sourceRoot":"","sources":["../../src/testing/TestJobStore.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,kBAAkB,CAAA;AAEhC;;;;GAIG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA"}
|
package/dist/testing/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,kBAAkB,CAAA;AAEhC;;;;GAIG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effect-mq",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
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(
|