@kronos-ts/messaging 0.3.1 → 0.5.0
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/dist/command-handling-module.d.ts.map +1 -1
- package/dist/command-handling-module.js +5 -1
- package/dist/command-handling-module.js.map +1 -1
- package/dist/dead-letter-listener.d.ts +36 -0
- package/dist/dead-letter-listener.d.ts.map +1 -0
- package/dist/dead-letter-listener.js +69 -0
- package/dist/dead-letter-listener.js.map +1 -0
- package/dist/dead-letter-queue.d.ts +5 -7
- package/dist/dead-letter-queue.d.ts.map +1 -1
- package/dist/dead-letter-queue.js +3 -13
- package/dist/dead-letter-queue.js.map +1 -1
- package/dist/dead-letter-reprocessor.d.ts +44 -0
- package/dist/dead-letter-reprocessor.d.ts.map +1 -0
- package/dist/dead-letter-reprocessor.js +48 -0
- package/dist/dead-letter-reprocessor.js.map +1 -0
- package/dist/dead-lettering-handler.d.ts +7 -4
- package/dist/dead-lettering-handler.d.ts.map +1 -1
- package/dist/dead-lettering-handler.js +36 -15
- package/dist/dead-lettering-handler.js.map +1 -1
- package/dist/enqueue-policy.d.ts +79 -0
- package/dist/enqueue-policy.d.ts.map +1 -0
- package/dist/enqueue-policy.js +95 -0
- package/dist/enqueue-policy.js.map +1 -0
- package/dist/event-processor-builder.d.ts +42 -3
- package/dist/event-processor-builder.d.ts.map +1 -1
- package/dist/event-processor-builder.js +49 -2
- package/dist/event-processor-builder.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/processor-configuration.d.ts +1 -1
- package/dist/processor-configuration.d.ts.map +1 -1
- package/dist/sequencing-policy.d.ts +41 -0
- package/dist/sequencing-policy.d.ts.map +1 -0
- package/dist/sequencing-policy.js +39 -0
- package/dist/sequencing-policy.js.map +1 -0
- package/dist/streaming-event-processor.d.ts +27 -0
- package/dist/streaming-event-processor.d.ts.map +1 -1
- package/dist/streaming-event-processor.js +81 -2
- package/dist/streaming-event-processor.js.map +1 -1
- package/dist/subscribing-event-processor.d.ts +9 -0
- package/dist/subscribing-event-processor.d.ts.map +1 -1
- package/dist/subscribing-event-processor.js +4 -2
- package/dist/subscribing-event-processor.js.map +1 -1
- package/dist/tracking-event-processor.d.ts +30 -0
- package/dist/tracking-event-processor.d.ts.map +1 -1
- package/dist/tracking-event-processor.js +84 -2
- package/dist/tracking-event-processor.js.map +1 -1
- package/package.json +3 -3
- package/src/command-handling-module.ts +6 -0
- package/src/dead-letter-listener.ts +97 -0
- package/src/dead-letter-queue.ts +8 -17
- package/src/dead-letter-reprocessor.ts +95 -0
- package/src/dead-lettering-handler.ts +50 -26
- package/src/enqueue-policy.ts +118 -0
- package/src/event-processor-builder.ts +67 -3
- package/src/index.ts +33 -1
- package/src/processor-configuration.ts +1 -1
- package/src/sequencing-policy.ts +55 -0
- package/src/streaming-event-processor.ts +119 -2
- package/src/subscribing-event-processor.ts +12 -1
- package/src/tracking-event-processor.ts +125 -2
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
import { emptyMetadata, qualifiedNameToString } from "@kronos-ts/common";
|
|
2
2
|
import { runInNewUoW } from "./unit-of-work.js";
|
|
3
|
+
import { createDeadLetteringDelivery } from "./dead-lettering-handler.js";
|
|
4
|
+
import { noOpDeadLetterListener } from "./dead-letter-listener.js";
|
|
5
|
+
import { createDeadLetterReprocessor, } from "./dead-letter-reprocessor.js";
|
|
3
6
|
import { loggingErrorHandler } from "./tracking-event-processor.js";
|
|
4
7
|
import { globalSequenceToken, replayToken, isReplayToken, isReplaying, advanceToken, } from "./tracking-token.js";
|
|
5
8
|
import { REPLAY_STATE_KEY } from "./replay-token.js";
|
|
6
9
|
import { setResource, onPrepareCommit } from "./processing-state.js";
|
|
7
|
-
import { STATE_MANAGER_KEY } from "@kronos-ts/eventsourcing";
|
|
10
|
+
import { STATE_MANAGER_KEY, EVENT_SCHEDULER_KEY } from "@kronos-ts/eventsourcing";
|
|
8
11
|
import { COMMAND_BUS_KEY } from "./send.js";
|
|
9
12
|
import { QUERY_BUS_KEY } from "./emit-update.js";
|
|
10
13
|
export function createStreamingEventProcessor(options) {
|
|
11
|
-
const { name, eventSource, eventHandlers, stateManager, commandBus, queryBus, onEventDelivery, unitOfWorkRunner = runInNewUoW, tokenStore, batchSize =
|
|
14
|
+
const { name, eventSource, eventHandlers, stateManager, commandBus, queryBus, eventScheduler, onEventDelivery, unitOfWorkRunner = runInNewUoW, tokenStore, deadLetterQueue, enqueuePolicy, sequencingPolicy, deadLetterListener = noOpDeadLetterListener(), resetClearsDeadLetters = false, dlqRetryIntervalMs, batchSize = 1, errorBackoffMs = 1000, errorHandler = loggingErrorHandler(name), handlerEnhancer, onReset, } = options;
|
|
12
15
|
const segment = 0;
|
|
16
|
+
// Option A: when a DLQ is configured, handler failures are caught and parked
|
|
17
|
+
// (not propagated), so the batch commits and the token advances past the
|
|
18
|
+
// poison pill. Built once; invoked inside the batch UnitOfWork by deliverEvent.
|
|
19
|
+
const deadLetterDelivery = deadLetterQueue
|
|
20
|
+
? createDeadLetteringDelivery({
|
|
21
|
+
queue: deadLetterQueue,
|
|
22
|
+
policy: enqueuePolicy,
|
|
23
|
+
sequencingPolicy,
|
|
24
|
+
listener: deadLetterListener,
|
|
25
|
+
})
|
|
26
|
+
: undefined;
|
|
27
|
+
// Reprocessor: replays a parked letter through the same handlers, with the
|
|
28
|
+
// same ALS resources as live delivery, so dependencies resolve identically.
|
|
29
|
+
const reprocessor = deadLetterQueue
|
|
30
|
+
? createDeadLetterReprocessor({
|
|
31
|
+
queue: deadLetterQueue,
|
|
32
|
+
policy: enqueuePolicy,
|
|
33
|
+
unitOfWorkRunner,
|
|
34
|
+
listener: deadLetterListener,
|
|
35
|
+
replay: replayDeadLetter,
|
|
36
|
+
})
|
|
37
|
+
: undefined;
|
|
38
|
+
let dlqRetryTimer = null;
|
|
13
39
|
const handlerMap = new Map();
|
|
14
40
|
for (const reg of eventHandlers) {
|
|
15
41
|
const eventName = qualifiedNameToString(reg.descriptor.name);
|
|
@@ -162,9 +188,18 @@ export function createStreamingEventProcessor(options) {
|
|
|
162
188
|
setResource(COMMAND_BUS_KEY, commandBus);
|
|
163
189
|
if (queryBus !== undefined)
|
|
164
190
|
setResource(QUERY_BUS_KEY, queryBus);
|
|
191
|
+
if (eventScheduler !== undefined)
|
|
192
|
+
setResource(EVENT_SCHEDULER_KEY, eventScheduler);
|
|
165
193
|
// Optional per-event callback (e.g. monitoring hooks registered inside the UoW).
|
|
166
194
|
if (onEventDelivery)
|
|
167
195
|
onEventDelivery();
|
|
196
|
+
// DLQ path: park failures, keep the batch committable (Option A). The DLQ
|
|
197
|
+
// delivery enforces per-sequence ordering and never propagates, so the
|
|
198
|
+
// errorHandler / batch-redelivery path is bypassed while a DLQ is active.
|
|
199
|
+
if (deadLetterDelivery) {
|
|
200
|
+
await deadLetterDelivery.deliver(sequencedEvent, handlers);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
168
203
|
for (const reg of handlers) {
|
|
169
204
|
try {
|
|
170
205
|
await reg.handler({ ...event, sequence: sequencedEvent.sequence });
|
|
@@ -174,6 +209,29 @@ export function createStreamingEventProcessor(options) {
|
|
|
174
209
|
}
|
|
175
210
|
}
|
|
176
211
|
}
|
|
212
|
+
// Replay a parked dead letter through the handlers, re-establishing the same
|
|
213
|
+
// ALS resources as live delivery. Throws on the first handler failure so the
|
|
214
|
+
// reprocessor can requeue the letter (delivery is at-least-once → handlers
|
|
215
|
+
// must be idempotent).
|
|
216
|
+
async function replayDeadLetter(letter) {
|
|
217
|
+
const event = letter.message;
|
|
218
|
+
const eventName = qualifiedNameToString(event.name);
|
|
219
|
+
const handlers = handlerMap.get(eventName);
|
|
220
|
+
if (!handlers || handlers.length === 0)
|
|
221
|
+
return;
|
|
222
|
+
if (stateManager !== undefined)
|
|
223
|
+
setResource(STATE_MANAGER_KEY, stateManager);
|
|
224
|
+
if (commandBus !== undefined)
|
|
225
|
+
setResource(COMMAND_BUS_KEY, commandBus);
|
|
226
|
+
if (queryBus !== undefined)
|
|
227
|
+
setResource(QUERY_BUS_KEY, queryBus);
|
|
228
|
+
if (eventScheduler !== undefined)
|
|
229
|
+
setResource(EVENT_SCHEDULER_KEY, eventScheduler);
|
|
230
|
+
const position = typeof letter.diagnostics.position === "number" ? BigInt(letter.diagnostics.position) : 0n;
|
|
231
|
+
for (const reg of handlers) {
|
|
232
|
+
await reg.handler({ ...event, sequence: position });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
177
235
|
function scheduleImmediate() {
|
|
178
236
|
if (processTimer !== null) {
|
|
179
237
|
clearTimeout(processTimer);
|
|
@@ -203,6 +261,13 @@ export function createStreamingEventProcessor(options) {
|
|
|
203
261
|
isRunning = true;
|
|
204
262
|
openStream();
|
|
205
263
|
scheduleImmediate();
|
|
264
|
+
if (reprocessor && dlqRetryIntervalMs && dlqRetryIntervalMs > 0) {
|
|
265
|
+
dlqRetryTimer = setInterval(() => {
|
|
266
|
+
void reprocessor.reprocessAll().catch((err) => {
|
|
267
|
+
console.error(`Event processor "${name}": scheduled DLQ drain failed:`, err);
|
|
268
|
+
});
|
|
269
|
+
}, dlqRetryIntervalMs);
|
|
270
|
+
}
|
|
206
271
|
},
|
|
207
272
|
stop() {
|
|
208
273
|
isRunning = false;
|
|
@@ -210,11 +275,20 @@ export function createStreamingEventProcessor(options) {
|
|
|
210
275
|
clearTimeout(processTimer);
|
|
211
276
|
processTimer = null;
|
|
212
277
|
}
|
|
278
|
+
if (dlqRetryTimer !== null) {
|
|
279
|
+
clearInterval(dlqRetryTimer);
|
|
280
|
+
dlqRetryTimer = null;
|
|
281
|
+
}
|
|
213
282
|
if (stream) {
|
|
214
283
|
stream.close();
|
|
215
284
|
stream = null;
|
|
216
285
|
}
|
|
217
286
|
},
|
|
287
|
+
async reprocessDeadLetters(filter) {
|
|
288
|
+
if (!reprocessor)
|
|
289
|
+
return false;
|
|
290
|
+
return reprocessor.reprocess(filter);
|
|
291
|
+
},
|
|
218
292
|
async resetTokens(startPosition = 0n, resetContext) {
|
|
219
293
|
if (isRunning) {
|
|
220
294
|
throw new Error(`Processor "${name}" must be stopped before resetting tokens`);
|
|
@@ -229,6 +303,11 @@ export function createStreamingEventProcessor(options) {
|
|
|
229
303
|
if (tokenStore) {
|
|
230
304
|
await tokenStore.store(name, segment, token);
|
|
231
305
|
}
|
|
306
|
+
// Axon allowReset: only clear parked letters when opted in (a replay
|
|
307
|
+
// re-derives view state, making prior dead letters meaningless).
|
|
308
|
+
if (resetClearsDeadLetters && deadLetterQueue) {
|
|
309
|
+
await deadLetterQueue.clear();
|
|
310
|
+
}
|
|
232
311
|
if (onReset) {
|
|
233
312
|
await onReset();
|
|
234
313
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-event-processor.js","sourceRoot":"","sources":["../src/streaming-event-processor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"streaming-event-processor.js","sourceRoot":"","sources":["../src/streaming-event-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import type { SubscribableEventSource } from "./event-bus.js";
|
|
|
5
5
|
import type { CommandBus } from "./command-bus.js";
|
|
6
6
|
import type { QueryBus } from "./query-bus.js";
|
|
7
7
|
import type { HandlerEnhancerDefinition } from "./handler-enhancer.js";
|
|
8
|
+
import type { EventScheduler } from "./event-scheduler.js";
|
|
8
9
|
export type { SubscribableEventSource } from "./event-bus.js";
|
|
9
10
|
/**
|
|
10
11
|
* A push-based event processor that subscribes directly to an event source.
|
|
@@ -15,6 +16,12 @@ export type { SubscribableEventSource } from "./event-bus.js";
|
|
|
15
16
|
* - Processes events synchronously with the publisher
|
|
16
17
|
* - Is suitable for in-memory projections that don't need persistence
|
|
17
18
|
*
|
|
19
|
+
* It also does **not** support a dead-letter queue — deliberately. A DLQ exists
|
|
20
|
+
* to let a processor advance its token past a poison pill and reprocess later;
|
|
21
|
+
* a subscribing processor has no token and runs in the publisher's call stack,
|
|
22
|
+
* so a failure must surface to the publisher (via the error handler), not be
|
|
23
|
+
* silently parked. Use a tracking/streaming processor with `.deadLetterQueue()`
|
|
24
|
+
* when you need dead-lettering.
|
|
18
25
|
*/
|
|
19
26
|
export interface SubscribingEventProcessor {
|
|
20
27
|
readonly name: string;
|
|
@@ -34,6 +41,8 @@ export interface SubscribingEventProcessorOptions {
|
|
|
34
41
|
commandBus?: CommandBus;
|
|
35
42
|
/** Query bus injected into ALS at handler-invocation entry (D-44). */
|
|
36
43
|
queryBus?: QueryBus;
|
|
44
|
+
/** Event scheduler injected into ALS at handler-invocation entry (read by schedule()). */
|
|
45
|
+
eventScheduler?: EventScheduler;
|
|
37
46
|
/** Optional per-event callback fired inside the UoW before handler invocation (e.g. monitoring). */
|
|
38
47
|
onEventDelivery?: () => void;
|
|
39
48
|
unitOfWorkRunner?: UoWRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribing-event-processor.d.ts","sourceRoot":"","sources":["../src/subscribing-event-processor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAEhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"subscribing-event-processor.d.ts","sourceRoot":"","sources":["../src/subscribing-event-processor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAEhF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAGtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAK1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAE7D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,yEAAyE;IACzE,aAAa,IAAI,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,uBAAuB,CAAA;IACpC,aAAa,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAA;IACpD,0EAA0E;IAC1E,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,oGAAoG;IACpG,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,2BAA2B,CAAA;IAC1C;;;;;OAKG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAA;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CAmG3B"}
|
|
@@ -2,7 +2,7 @@ import { emptyMetadata, qualifiedNameToString } from "@kronos-ts/common";
|
|
|
2
2
|
import { runInNewUoW } from "./unit-of-work.js";
|
|
3
3
|
import { loggingErrorHandler } from "./tracking-event-processor.js";
|
|
4
4
|
import { setResource } from "./processing-state.js";
|
|
5
|
-
import { STATE_MANAGER_KEY } from "@kronos-ts/eventsourcing";
|
|
5
|
+
import { STATE_MANAGER_KEY, EVENT_SCHEDULER_KEY } from "@kronos-ts/eventsourcing";
|
|
6
6
|
import { COMMAND_BUS_KEY } from "./send.js";
|
|
7
7
|
import { QUERY_BUS_KEY } from "./emit-update.js";
|
|
8
8
|
/**
|
|
@@ -13,7 +13,7 @@ import { QUERY_BUS_KEY } from "./emit-update.js";
|
|
|
13
13
|
* publisher's call stack (synchronous with append).
|
|
14
14
|
*/
|
|
15
15
|
export function createSubscribingEventProcessor(options) {
|
|
16
|
-
const { name, eventSource, eventHandlers, stateManager, commandBus, queryBus, onEventDelivery, unitOfWorkRunner = runInNewUoW, errorHandler = loggingErrorHandler(name), handlerEnhancer, } = options;
|
|
16
|
+
const { name, eventSource, eventHandlers, stateManager, commandBus, queryBus, eventScheduler, onEventDelivery, unitOfWorkRunner = runInNewUoW, errorHandler = loggingErrorHandler(name), handlerEnhancer, } = options;
|
|
17
17
|
// Build handler lookup: eventName → handler[]
|
|
18
18
|
// Plan 09-01: when a handlerEnhancer is supplied, wrap each handler at
|
|
19
19
|
// registration time symmetric to TrackingEventProcessor. Plan 11-02:
|
|
@@ -62,6 +62,8 @@ export function createSubscribingEventProcessor(options) {
|
|
|
62
62
|
setResource(COMMAND_BUS_KEY, commandBus);
|
|
63
63
|
if (queryBus !== undefined)
|
|
64
64
|
setResource(QUERY_BUS_KEY, queryBus);
|
|
65
|
+
if (eventScheduler !== undefined)
|
|
66
|
+
setResource(EVENT_SCHEDULER_KEY, eventScheduler);
|
|
65
67
|
// Optional per-event callback (e.g. monitoring hooks registered inside the UoW).
|
|
66
68
|
if (onEventDelivery)
|
|
67
69
|
onEventDelivery();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribing-event-processor.js","sourceRoot":"","sources":["../src/subscribing-event-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAKxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAKnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"subscribing-event-processor.js","sourceRoot":"","sources":["../src/subscribing-event-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAKxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAKnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAEjF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAuDhD;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAyC;IAEzC,MAAM,EACJ,IAAI,EACJ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,eAAe,EACf,gBAAgB,GAAG,WAAW,EAC9B,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,EACxC,eAAe,GAChB,GAAG,OAAO,CAAA;IAEX,8CAA8C;IAC9C,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2C,CAAA;IACrE,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5D,MAAM,QAAQ,GAAG,eAAe;YAC9B,CAAC,CAAC;gBACE,GAAG,GAAG;gBACN,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE;oBAChD,WAAW,EAAE,OAAgB;oBAC7B,WAAW,EAAE,SAAS;oBACtB,YAAY,EAAE,IAAI;iBACnB,CAAC;aACH;YACH,CAAC,CAAC,GAAG,CAAA;QACP,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,QAAyC,CAAC,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAyC,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;IAED,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,WAAW,GAAwB,IAAI,CAAA;IAE3C,KAAK,UAAU,YAAY,CAAC,MAAmC;QAC7D,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE7C,MAAM,gBAAgB,CAAC,aAAa,EAAE,EAAE,KAAK,IAAI,EAAE;YACjD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,YAAY,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,KAAmB;QAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE9C,kFAAkF;QAClF,IAAI,YAAY,KAAK,SAAS;YAAE,WAAW,CAAC,iBAAiB,EAAE,YAAmB,CAAC,CAAA;QACnF,IAAI,UAAU,KAAK,SAAS;YAAE,WAAW,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;QACtE,IAAI,QAAQ,KAAK,SAAS;YAAE,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAChE,IAAI,cAAc,KAAK,SAAS;YAAE,WAAW,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;QAClF,iFAAiF;QACjF,IAAI,eAAe;YAAE,eAAe,EAAE,CAAA;QAEtC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,4DAA4D;gBAC5D,oCAAoC;gBACpC,MAAM,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,KAAK,OAAO,IAAI,CAAA,CAAC,CAAC;QAC1B,IAAI,OAAO,KAAK,OAAO,SAAS,CAAA,CAAC,CAAC;QAElC,KAAK;YACH,IAAI,SAAS;gBAAE,OAAM;YACrB,SAAS,GAAG,IAAI,CAAA;YAChB,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,IAAI;YACF,SAAS,GAAG,KAAK,CAAA;YACjB,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAA;gBACb,WAAW,GAAG,IAAI,CAAA;YACpB,CAAC;QACH,CAAC;QAED,aAAa;YACX,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -2,9 +2,13 @@ import type { EventHandlerDefinition } from "./event-handler.js";
|
|
|
2
2
|
import type { StreamableEventSource } from "./event-source.js";
|
|
3
3
|
import type { UoWRunner } from "./unit-of-work.js";
|
|
4
4
|
import type { TokenStore } from "./token-store.js";
|
|
5
|
+
import type { SequencedDeadLetterQueue, EnqueuePolicy } from "./dead-letter-queue.js";
|
|
6
|
+
import type { SequencingPolicy } from "./sequencing-policy.js";
|
|
7
|
+
import { type DeadLetterListener } from "./dead-letter-listener.js";
|
|
5
8
|
import type { HandlerEnhancerDefinition } from "./handler-enhancer.js";
|
|
6
9
|
import type { CommandBus } from "./command-bus.js";
|
|
7
10
|
import type { QueryBus } from "./query-bus.js";
|
|
11
|
+
import type { EventScheduler } from "./event-scheduler.js";
|
|
8
12
|
/**
|
|
9
13
|
* A tracking event processor that reads events from a streamable event source
|
|
10
14
|
* and delivers them to registered event handlers.
|
|
@@ -30,6 +34,12 @@ export interface TrackingEventProcessor {
|
|
|
30
34
|
* The processor must be stopped before calling this.
|
|
31
35
|
*/
|
|
32
36
|
resetTokens(startPosition?: bigint, resetContext?: unknown): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Replay parked dead letters back through the handlers (the oldest matching
|
|
39
|
+
* sequence). No-op returning false when no DLQ is configured. Safe to call
|
|
40
|
+
* whether or not the processor is running.
|
|
41
|
+
*/
|
|
42
|
+
reprocessDeadLetters(filter?: (sequenceId: string) => boolean): Promise<boolean>;
|
|
33
43
|
}
|
|
34
44
|
export interface TrackingEventProcessorOptions {
|
|
35
45
|
name: string;
|
|
@@ -41,10 +51,30 @@ export interface TrackingEventProcessorOptions {
|
|
|
41
51
|
commandBus?: CommandBus;
|
|
42
52
|
/** Query bus injected into ALS at handler-invocation entry (D-44). */
|
|
43
53
|
queryBus?: QueryBus;
|
|
54
|
+
/** Event scheduler injected into ALS at handler-invocation entry (read by schedule()). */
|
|
55
|
+
eventScheduler?: EventScheduler;
|
|
44
56
|
/** Optional per-event callback fired inside the UoW before handler invocation (e.g. monitoring). */
|
|
45
57
|
onEventDelivery?: () => void;
|
|
46
58
|
unitOfWorkRunner?: UoWRunner;
|
|
47
59
|
tokenStore?: TokenStore;
|
|
60
|
+
/**
|
|
61
|
+
* Dead letter queue for poison-pill handling. When set, a handler failure
|
|
62
|
+
* parks the event in the DLQ (per {@link enqueuePolicy}) and the batch
|
|
63
|
+
* commits so the token advances past it — instead of redelivering the batch
|
|
64
|
+
* forever. The enqueue runs inside the batch UnitOfWork, so it commits in the
|
|
65
|
+
* same transaction as the token update.
|
|
66
|
+
*/
|
|
67
|
+
deadLetterQueue?: SequencedDeadLetterQueue;
|
|
68
|
+
/** Decides whether a failed event is enqueued. Default: always enqueue. */
|
|
69
|
+
enqueuePolicy?: EnqueuePolicy;
|
|
70
|
+
/** Decides each event's ordered sequence for the DLQ. Default: first tag value. */
|
|
71
|
+
sequencingPolicy?: SequencingPolicy;
|
|
72
|
+
/** Observability hook for dead-letter lifecycle events. Default: no-op. */
|
|
73
|
+
deadLetterListener?: DeadLetterListener;
|
|
74
|
+
/** When true, resetTokens() also clears this processor's DLQ (Axon allowReset). Default: false. */
|
|
75
|
+
resetClearsDeadLetters?: boolean;
|
|
76
|
+
/** When set, automatically drains the DLQ on this interval (ms). Off by default. */
|
|
77
|
+
dlqRetryIntervalMs?: number;
|
|
48
78
|
/** Polling interval when no events are available (ms). Default: 500. */
|
|
49
79
|
pollingIntervalMs?: number;
|
|
50
80
|
batchSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-event-processor.d.ts","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAiC,MAAM,mBAAmB,CAAA;AAC7F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"tracking-event-processor.d.ts","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { emptyMetadata, qualifiedNameToString } from "@kronos-ts/common";
|
|
2
2
|
import { runInNewUoW } from "./unit-of-work.js";
|
|
3
|
+
import { createDeadLetteringDelivery } from "./dead-lettering-handler.js";
|
|
4
|
+
import { noOpDeadLetterListener } from "./dead-letter-listener.js";
|
|
5
|
+
import { createDeadLetterReprocessor, } from "./dead-letter-reprocessor.js";
|
|
3
6
|
import { globalSequenceToken, replayToken, isReplayToken, isReplaying, advanceToken, } from "./tracking-token.js";
|
|
4
7
|
import { REPLAY_STATE_KEY } from "./replay-token.js";
|
|
5
8
|
import { setResource, onPrepareCommit } from "./processing-state.js";
|
|
6
|
-
import { STATE_MANAGER_KEY } from "@kronos-ts/eventsourcing";
|
|
9
|
+
import { STATE_MANAGER_KEY, EVENT_SCHEDULER_KEY } from "@kronos-ts/eventsourcing";
|
|
7
10
|
import { COMMAND_BUS_KEY } from "./send.js";
|
|
8
11
|
import { QUERY_BUS_KEY } from "./emit-update.js";
|
|
9
12
|
/**
|
|
@@ -27,8 +30,31 @@ export function propagatingErrorHandler() {
|
|
|
27
30
|
};
|
|
28
31
|
}
|
|
29
32
|
export function createTrackingEventProcessor(options) {
|
|
30
|
-
const { name, eventSource, eventHandlers, stateManager, commandBus, queryBus, onEventDelivery, unitOfWorkRunner = runInNewUoW, tokenStore, pollingIntervalMs = 500, batchSize =
|
|
33
|
+
const { name, eventSource, eventHandlers, stateManager, commandBus, queryBus, eventScheduler, onEventDelivery, unitOfWorkRunner = runInNewUoW, tokenStore, deadLetterQueue, enqueuePolicy, sequencingPolicy, deadLetterListener = noOpDeadLetterListener(), resetClearsDeadLetters = false, dlqRetryIntervalMs, pollingIntervalMs = 500, batchSize = 1, errorHandler = loggingErrorHandler(name), handlerEnhancer, onReset, } = options;
|
|
31
34
|
const segment = 0;
|
|
35
|
+
// Option A: when a DLQ is configured, handler failures are caught and parked
|
|
36
|
+
// (not propagated), so the batch commits and the token advances past the
|
|
37
|
+
// poison pill. Built once; invoked inside the batch UnitOfWork by deliverEvent.
|
|
38
|
+
const deadLetterDelivery = deadLetterQueue
|
|
39
|
+
? createDeadLetteringDelivery({
|
|
40
|
+
queue: deadLetterQueue,
|
|
41
|
+
policy: enqueuePolicy,
|
|
42
|
+
sequencingPolicy,
|
|
43
|
+
listener: deadLetterListener,
|
|
44
|
+
})
|
|
45
|
+
: undefined;
|
|
46
|
+
// Reprocessor: replays a parked letter through the same handlers, with the
|
|
47
|
+
// same ALS resources as live delivery, so dependencies resolve identically.
|
|
48
|
+
const reprocessor = deadLetterQueue
|
|
49
|
+
? createDeadLetterReprocessor({
|
|
50
|
+
queue: deadLetterQueue,
|
|
51
|
+
policy: enqueuePolicy,
|
|
52
|
+
unitOfWorkRunner,
|
|
53
|
+
listener: deadLetterListener,
|
|
54
|
+
replay: replayDeadLetter,
|
|
55
|
+
})
|
|
56
|
+
: undefined;
|
|
57
|
+
let dlqRetryTimer = null;
|
|
32
58
|
const handlerMap = new Map();
|
|
33
59
|
for (const reg of eventHandlers) {
|
|
34
60
|
const eventName = qualifiedNameToString(reg.descriptor.name);
|
|
@@ -169,9 +195,18 @@ export function createTrackingEventProcessor(options) {
|
|
|
169
195
|
setResource(COMMAND_BUS_KEY, commandBus);
|
|
170
196
|
if (queryBus !== undefined)
|
|
171
197
|
setResource(QUERY_BUS_KEY, queryBus);
|
|
198
|
+
if (eventScheduler !== undefined)
|
|
199
|
+
setResource(EVENT_SCHEDULER_KEY, eventScheduler);
|
|
172
200
|
// Optional per-event callback (e.g. monitoring hooks registered inside the UoW).
|
|
173
201
|
if (onEventDelivery)
|
|
174
202
|
onEventDelivery();
|
|
203
|
+
// DLQ path: park failures, keep the batch committable (Option A). The DLQ
|
|
204
|
+
// delivery enforces per-sequence ordering and never propagates, so the
|
|
205
|
+
// errorHandler / batch-redelivery path is bypassed while a DLQ is active.
|
|
206
|
+
if (deadLetterDelivery) {
|
|
207
|
+
await deadLetterDelivery.deliver(sequencedEvent, handlers);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
175
210
|
for (const reg of handlers) {
|
|
176
211
|
try {
|
|
177
212
|
await reg.handler({ ...event, sequence: sequencedEvent.sequence });
|
|
@@ -181,6 +216,29 @@ export function createTrackingEventProcessor(options) {
|
|
|
181
216
|
}
|
|
182
217
|
}
|
|
183
218
|
}
|
|
219
|
+
// Replay a parked dead letter through the handlers, re-establishing the same
|
|
220
|
+
// ALS resources as live delivery. Throws on the first handler failure so the
|
|
221
|
+
// reprocessor can requeue the letter (delivery is at-least-once → handlers
|
|
222
|
+
// must be idempotent).
|
|
223
|
+
async function replayDeadLetter(letter) {
|
|
224
|
+
const event = letter.message;
|
|
225
|
+
const eventName = qualifiedNameToString(event.name);
|
|
226
|
+
const handlers = handlerMap.get(eventName);
|
|
227
|
+
if (!handlers || handlers.length === 0)
|
|
228
|
+
return;
|
|
229
|
+
if (stateManager !== undefined)
|
|
230
|
+
setResource(STATE_MANAGER_KEY, stateManager);
|
|
231
|
+
if (commandBus !== undefined)
|
|
232
|
+
setResource(COMMAND_BUS_KEY, commandBus);
|
|
233
|
+
if (queryBus !== undefined)
|
|
234
|
+
setResource(QUERY_BUS_KEY, queryBus);
|
|
235
|
+
if (eventScheduler !== undefined)
|
|
236
|
+
setResource(EVENT_SCHEDULER_KEY, eventScheduler);
|
|
237
|
+
const position = typeof letter.diagnostics.position === "number" ? BigInt(letter.diagnostics.position) : 0n;
|
|
238
|
+
for (const reg of handlers) {
|
|
239
|
+
await reg.handler({ ...event, sequence: position });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
184
242
|
function scheduleImmediate() {
|
|
185
243
|
if (pollTimer !== null) {
|
|
186
244
|
clearTimeout(pollTimer);
|
|
@@ -198,6 +256,15 @@ export function createTrackingEventProcessor(options) {
|
|
|
198
256
|
await initialize();
|
|
199
257
|
isRunning = true;
|
|
200
258
|
poll();
|
|
259
|
+
// Optional scheduled DLQ drain — operators can also trigger reprocessing
|
|
260
|
+
// manually via reprocessDeadLetters().
|
|
261
|
+
if (reprocessor && dlqRetryIntervalMs && dlqRetryIntervalMs > 0) {
|
|
262
|
+
dlqRetryTimer = setInterval(() => {
|
|
263
|
+
void reprocessor.reprocessAll().catch((err) => {
|
|
264
|
+
console.error(`Event processor "${name}": scheduled DLQ drain failed:`, err);
|
|
265
|
+
});
|
|
266
|
+
}, dlqRetryIntervalMs);
|
|
267
|
+
}
|
|
201
268
|
},
|
|
202
269
|
stop() {
|
|
203
270
|
isRunning = false;
|
|
@@ -205,11 +272,20 @@ export function createTrackingEventProcessor(options) {
|
|
|
205
272
|
clearTimeout(pollTimer);
|
|
206
273
|
pollTimer = null;
|
|
207
274
|
}
|
|
275
|
+
if (dlqRetryTimer !== null) {
|
|
276
|
+
clearInterval(dlqRetryTimer);
|
|
277
|
+
dlqRetryTimer = null;
|
|
278
|
+
}
|
|
208
279
|
if (stream) {
|
|
209
280
|
stream.close();
|
|
210
281
|
stream = null;
|
|
211
282
|
}
|
|
212
283
|
},
|
|
284
|
+
async reprocessDeadLetters(filter) {
|
|
285
|
+
if (!reprocessor)
|
|
286
|
+
return false;
|
|
287
|
+
return reprocessor.reprocess(filter);
|
|
288
|
+
},
|
|
213
289
|
async resetTokens(startPosition = 0n, resetContext) {
|
|
214
290
|
if (isRunning) {
|
|
215
291
|
throw new Error(`Processor "${name}" must be stopped before resetting tokens`);
|
|
@@ -224,6 +300,12 @@ export function createTrackingEventProcessor(options) {
|
|
|
224
300
|
if (tokenStore) {
|
|
225
301
|
await tokenStore.store(name, segment, token);
|
|
226
302
|
}
|
|
303
|
+
// Axon allowReset: a replay re-derives view state from scratch, so stale
|
|
304
|
+
// dead letters from the prior run are meaningless. Only clear when opted
|
|
305
|
+
// in — otherwise parked letters survive a reset for manual handling.
|
|
306
|
+
if (resetClearsDeadLetters && deadLetterQueue) {
|
|
307
|
+
await deadLetterQueue.clear();
|
|
308
|
+
}
|
|
227
309
|
if (onReset) {
|
|
228
310
|
await onReset();
|
|
229
311
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-event-processor.js","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAKxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"tracking-event-processor.js","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kronos-ts/messaging",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Messaging primitives for Kronos — commands, events, handlers, and event processors.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@kronos-ts/common": "0.1.
|
|
59
|
-
"@kronos-ts/eventsourcing": "0.
|
|
58
|
+
"@kronos-ts/common": "0.1.1",
|
|
59
|
+
"@kronos-ts/eventsourcing": "0.2.0",
|
|
60
60
|
"zod": "^4.3.6"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
@@ -26,6 +26,7 @@ const COMMAND_INVOCATION_KEYS = {
|
|
|
26
26
|
STATE_MANAGER: "stateManager",
|
|
27
27
|
COMMAND_BUS: "commandBus",
|
|
28
28
|
QUERY_BUS: "queryBus",
|
|
29
|
+
EVENT_SCHEDULER: "eventScheduler",
|
|
29
30
|
EVENT_STORE: "eventStore",
|
|
30
31
|
TAG_RESOLVER: "tagResolver",
|
|
31
32
|
} as const
|
|
@@ -43,7 +44,9 @@ import {
|
|
|
43
44
|
BUFFERED_EVENTS_KEY,
|
|
44
45
|
SOURCING_INFOS_KEY,
|
|
45
46
|
STATE_MANAGER_KEY,
|
|
47
|
+
EVENT_SCHEDULER_KEY,
|
|
46
48
|
} from "@kronos-ts/eventsourcing"
|
|
49
|
+
import type { EventScheduler } from "./event-scheduler.js"
|
|
47
50
|
|
|
48
51
|
// ---------------------------------------------------------------------------
|
|
49
52
|
// Command invocation — D-82: byte-identical ALS resource setup at invocation entry.
|
|
@@ -76,6 +79,9 @@ export function createCommandInvocation(
|
|
|
76
79
|
if (config.hasComponent(COMMAND_INVOCATION_KEYS.QUERY_BUS)) {
|
|
77
80
|
setResource(QUERY_BUS_KEY, config.getComponent<QueryBus>(COMMAND_INVOCATION_KEYS.QUERY_BUS))
|
|
78
81
|
}
|
|
82
|
+
if (config.hasComponent(COMMAND_INVOCATION_KEYS.EVENT_SCHEDULER)) {
|
|
83
|
+
setResource(EVENT_SCHEDULER_KEY, config.getComponent<EventScheduler>(COMMAND_INVOCATION_KEYS.EVENT_SCHEDULER))
|
|
84
|
+
}
|
|
79
85
|
|
|
80
86
|
// Register event flush in PREPARE_COMMIT phase once per UnitOfWork.
|
|
81
87
|
// Nested context-aware dispatch re-enters createCommandInvocation inside
|