@kronos-ts/messaging 0.7.0 → 0.9.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/event-processor.d.ts +32 -2
- package/dist/event-processor.d.ts.map +1 -1
- package/dist/event-processor.js +10 -0
- package/dist/event-processor.js.map +1 -1
- package/dist/event-source.d.ts +17 -0
- package/dist/event-source.d.ts.map +1 -1
- package/dist/event-source.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/streaming-event-processor.d.ts.map +1 -1
- package/dist/streaming-event-processor.js +10 -5
- package/dist/streaming-event-processor.js.map +1 -1
- package/dist/subscribing-event-processor.js +2 -2
- package/dist/subscribing-event-processor.js.map +1 -1
- package/dist/tracking-event-processor.d.ts +14 -6
- package/dist/tracking-event-processor.d.ts.map +1 -1
- package/dist/tracking-event-processor.js +39 -16
- package/dist/tracking-event-processor.js.map +1 -1
- package/dist/tracking-token.d.ts +54 -0
- package/dist/tracking-token.d.ts.map +1 -1
- package/dist/tracking-token.js +71 -8
- package/dist/tracking-token.js.map +1 -1
- package/package.json +2 -2
- package/src/event-processor.ts +34 -2
- package/src/event-source.ts +17 -0
- package/src/index.ts +9 -4
- package/src/streaming-event-processor.ts +10 -4
- package/src/subscribing-event-processor.ts +2 -2
- package/src/tracking-event-processor.ts +46 -20
- package/src/tracking-token.ts +112 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-event-processor.js","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tracking-event-processor.js","sourceRoot":"","sources":["../src/tracking-event-processor.ts"],"names":[],"mappings":"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"}
|
package/dist/tracking-token.d.ts
CHANGED
|
@@ -55,6 +55,31 @@ export interface GlobalSequenceToken extends TrackingToken {
|
|
|
55
55
|
* This is the default token type for in-memory stores and Axon Server.
|
|
56
56
|
*/
|
|
57
57
|
export declare function globalSequenceToken(sequence: bigint): GlobalSequenceToken;
|
|
58
|
+
export interface GapAwareToken extends TrackingToken {
|
|
59
|
+
readonly kind: "gap-aware";
|
|
60
|
+
/** The `sequence_position` of the last consumed event — the `position()`. */
|
|
61
|
+
readonly sequence: bigint;
|
|
62
|
+
/**
|
|
63
|
+
* An opaque, store-defined commit-order key that, paired with `sequence`,
|
|
64
|
+
* forms a gap-free tailing cursor. For the Postgres engine this is the
|
|
65
|
+
* event's `transaction_id` (xid8): the durable token MUST carry it because
|
|
66
|
+
* gap-free tailing orders by `(transaction_id, sequence_position)` and only
|
|
67
|
+
* `transaction_id` has a commit watermark (`pg_snapshot_xmin`). A position
|
|
68
|
+
* alone cannot resume the stream without permanently skipping events whose
|
|
69
|
+
* `sequence_position` is lower but whose `transaction_id` is higher (the
|
|
70
|
+
* xid/seq inversion that happens when a transaction writes other rows —
|
|
71
|
+
* stamping its xid — before appending its event).
|
|
72
|
+
*/
|
|
73
|
+
readonly gapKey: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates a token for a gap-free tailing engine: a `sequence` position paired
|
|
77
|
+
* with an opaque `gapKey` (the store's commit-order key, e.g. Postgres xid8).
|
|
78
|
+
* `position()` returns the sequence so replay/`covers` semantics are unchanged;
|
|
79
|
+
* the `gapKey` rides along so the engine can resume the `(gapKey, sequence)`
|
|
80
|
+
* cursor exactly on reopen instead of falling back to a lossy position filter.
|
|
81
|
+
*/
|
|
82
|
+
export declare function gapAwareToken(sequence: bigint, gapKey: string): GapAwareToken;
|
|
58
83
|
/**
|
|
59
84
|
* Sentinel token representing the beginning of the event stream.
|
|
60
85
|
* A processor starting with FIRST_TOKEN will read from position 0.
|
|
@@ -89,11 +114,40 @@ export interface ReplayToken extends TrackingToken {
|
|
|
89
114
|
export declare function replayToken(tokenAtReset: TrackingToken, currentToken: TrackingToken, resetContext?: unknown): ReplayToken;
|
|
90
115
|
export declare function isReplayToken(token: TrackingToken): token is ReplayToken;
|
|
91
116
|
export declare function isGlobalSequenceToken(token: TrackingToken): token is GlobalSequenceToken;
|
|
117
|
+
export declare function isGapAwareToken(token: TrackingToken): token is GapAwareToken;
|
|
118
|
+
/**
|
|
119
|
+
* Advance a token to the position represented by `next`, preserving replay
|
|
120
|
+
* wrapping. Generalises {@link advanceToken} to any TrackingToken — used when
|
|
121
|
+
* the event source supplies its own cursor token (e.g. a {@link GapAwareToken}
|
|
122
|
+
* carrying a commit-order key) that must be persisted verbatim rather than
|
|
123
|
+
* collapsed to a bare position.
|
|
124
|
+
*/
|
|
125
|
+
export declare function advanceTokenTo(token: TrackingToken, next: TrackingToken): TrackingToken;
|
|
92
126
|
/**
|
|
93
127
|
* Advance a token to a new position. If the token is a ReplayToken and
|
|
94
128
|
* the new position covers the reset point, unwraps to a plain token.
|
|
95
129
|
*/
|
|
96
130
|
export declare function advanceToken(token: TrackingToken, newPosition: bigint): TrackingToken;
|
|
131
|
+
/** Wire shape for a persisted token: a `kind` discriminant + a JSON body. */
|
|
132
|
+
export interface SerializedToken {
|
|
133
|
+
readonly type: string;
|
|
134
|
+
readonly data: string;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Serialize a token for durable storage. The JSON body always carries
|
|
138
|
+
* `position`; when the token (or, for a ReplayToken, its innermost token) is a
|
|
139
|
+
* {@link GapAwareToken}, the `gapKey` is preserved so the cursor resumes
|
|
140
|
+
* exactly on reload. ReplayTokens still flatten to their current position on
|
|
141
|
+
* the wire (replay-in-progress state does not survive a restart, as before),
|
|
142
|
+
* but the gapKey survives so live tailing resumes without skipping events.
|
|
143
|
+
*/
|
|
144
|
+
export declare function serializeToken(token: TrackingToken): SerializedToken;
|
|
145
|
+
/**
|
|
146
|
+
* Reconstruct a token from its persisted form. A body carrying a `gapKey`
|
|
147
|
+
* rehydrates as a {@link GapAwareToken}; otherwise a {@link GlobalSequenceToken}.
|
|
148
|
+
* Returns undefined when there is no stored token.
|
|
149
|
+
*/
|
|
150
|
+
export declare function deserializeToken(type: string | null | undefined, data: string | null | undefined): TrackingToken | undefined;
|
|
97
151
|
/**
|
|
98
152
|
* Check whether the given token represents a replay in progress.
|
|
99
153
|
* Returns true if the token is a ReplayToken AND the current position
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-token.d.ts","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAAA;IAElB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAA;IAErC;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAAA;IAE/C;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAAA;IAE/C;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAA;CAC9C;AAMD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAUzE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,aAAuC,CAAA;AAEjE;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,aAO1B,CAAA;AAMD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,qEAAqE;IACrE,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;IACpC,qGAAqG;IACrG,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAA;IACpC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,aAAa,EAC3B,YAAY,EAAE,aAAa,EAC3B,YAAY,CAAC,EAAE,OAAO,GACrB,WAAW,CA+Bb;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,WAAW,CAExE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,mBAAmB,CAExF;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"tracking-token.d.ts","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"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"}
|
package/dist/tracking-token.js
CHANGED
|
@@ -13,6 +13,25 @@ export function globalSequenceToken(sequence) {
|
|
|
13
13
|
samePositionAs: (other) => sequence === other.position(),
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Creates a token for a gap-free tailing engine: a `sequence` position paired
|
|
18
|
+
* with an opaque `gapKey` (the store's commit-order key, e.g. Postgres xid8).
|
|
19
|
+
* `position()` returns the sequence so replay/`covers` semantics are unchanged;
|
|
20
|
+
* the `gapKey` rides along so the engine can resume the `(gapKey, sequence)`
|
|
21
|
+
* cursor exactly on reopen instead of falling back to a lossy position filter.
|
|
22
|
+
*/
|
|
23
|
+
export function gapAwareToken(sequence, gapKey) {
|
|
24
|
+
return {
|
|
25
|
+
kind: "gap-aware",
|
|
26
|
+
sequence,
|
|
27
|
+
gapKey,
|
|
28
|
+
position: () => sequence,
|
|
29
|
+
covers: (other) => sequence >= other.position(),
|
|
30
|
+
lowerBound: (other) => sequence <= other.position() ? gapAwareToken(sequence, gapKey) : globalSequenceToken(other.position()),
|
|
31
|
+
upperBound: (other) => sequence >= other.position() ? gapAwareToken(sequence, gapKey) : globalSequenceToken(other.position()),
|
|
32
|
+
samePositionAs: (other) => sequence === other.position(),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
16
35
|
/**
|
|
17
36
|
* Sentinel token representing the beginning of the event stream.
|
|
18
37
|
* A processor starting with FIRST_TOKEN will read from position 0.
|
|
@@ -78,24 +97,68 @@ export function isReplayToken(token) {
|
|
|
78
97
|
export function isGlobalSequenceToken(token) {
|
|
79
98
|
return token.kind === "global-sequence";
|
|
80
99
|
}
|
|
100
|
+
export function isGapAwareToken(token) {
|
|
101
|
+
return token.kind === "gap-aware";
|
|
102
|
+
}
|
|
81
103
|
// ---------------------------------------------------------------------------
|
|
82
104
|
// Token operations
|
|
83
105
|
// ---------------------------------------------------------------------------
|
|
106
|
+
/**
|
|
107
|
+
* Advance a token to the position represented by `next`, preserving replay
|
|
108
|
+
* wrapping. Generalises {@link advanceToken} to any TrackingToken — used when
|
|
109
|
+
* the event source supplies its own cursor token (e.g. a {@link GapAwareToken}
|
|
110
|
+
* carrying a commit-order key) that must be persisted verbatim rather than
|
|
111
|
+
* collapsed to a bare position.
|
|
112
|
+
*/
|
|
113
|
+
export function advanceTokenTo(token, next) {
|
|
114
|
+
if (!isReplayToken(token)) {
|
|
115
|
+
return next;
|
|
116
|
+
}
|
|
117
|
+
// Check if replay is complete
|
|
118
|
+
if (next.covers(token.tokenAtReset)) {
|
|
119
|
+
return next;
|
|
120
|
+
}
|
|
121
|
+
// Still replaying — wrap the advanced token
|
|
122
|
+
return replayToken(token.tokenAtReset, next, token.resetContext);
|
|
123
|
+
}
|
|
84
124
|
/**
|
|
85
125
|
* Advance a token to a new position. If the token is a ReplayToken and
|
|
86
126
|
* the new position covers the reset point, unwraps to a plain token.
|
|
87
127
|
*/
|
|
88
128
|
export function advanceToken(token, newPosition) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
129
|
+
return advanceTokenTo(token, globalSequenceToken(newPosition));
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Serialize a token for durable storage. The JSON body always carries
|
|
133
|
+
* `position`; when the token (or, for a ReplayToken, its innermost token) is a
|
|
134
|
+
* {@link GapAwareToken}, the `gapKey` is preserved so the cursor resumes
|
|
135
|
+
* exactly on reload. ReplayTokens still flatten to their current position on
|
|
136
|
+
* the wire (replay-in-progress state does not survive a restart, as before),
|
|
137
|
+
* but the gapKey survives so live tailing resumes without skipping events.
|
|
138
|
+
*/
|
|
139
|
+
export function serializeToken(token) {
|
|
140
|
+
const inner = unwrapToken(token);
|
|
141
|
+
const payload = {
|
|
142
|
+
position: token.position().toString(),
|
|
143
|
+
};
|
|
144
|
+
if (isGapAwareToken(inner)) {
|
|
145
|
+
payload.gapKey = inner.gapKey;
|
|
92
146
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
147
|
+
return { type: token.kind, data: JSON.stringify(payload) };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Reconstruct a token from its persisted form. A body carrying a `gapKey`
|
|
151
|
+
* rehydrates as a {@link GapAwareToken}; otherwise a {@link GlobalSequenceToken}.
|
|
152
|
+
* Returns undefined when there is no stored token.
|
|
153
|
+
*/
|
|
154
|
+
export function deserializeToken(type, data) {
|
|
155
|
+
if (!data)
|
|
156
|
+
return undefined;
|
|
157
|
+
const parsed = JSON.parse(data);
|
|
158
|
+
if (parsed.gapKey !== undefined) {
|
|
159
|
+
return gapAwareToken(BigInt(parsed.position), parsed.gapKey);
|
|
96
160
|
}
|
|
97
|
-
|
|
98
|
-
return replayToken(token.tokenAtReset, advanced, token.resetContext);
|
|
161
|
+
return globalSequenceToken(BigInt(parsed.position));
|
|
99
162
|
}
|
|
100
163
|
/**
|
|
101
164
|
* Check whether the given token represents a replay in progress.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-token.js","sourceRoot":"","sources":["../src/tracking-token.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tracking-token.js","sourceRoot":"","sources":["../src/tracking-token.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.9.0",
|
|
4
4
|
"description": "Messaging primitives for Kronos — commands, events, handlers, and event processors.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@kronos-ts/common": "0.1.1",
|
|
64
|
-
"@kronos-ts/eventsourcing": "0.
|
|
64
|
+
"@kronos-ts/eventsourcing": "0.3.1",
|
|
65
65
|
"zod": "^4.3.6"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
package/src/event-processor.ts
CHANGED
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Common
|
|
2
|
+
* Common control + status surface for all event processors — the kronos analog
|
|
3
|
+
* of AF5's `EventProcessor` interface. This is the contract a host (or an admin
|
|
4
|
+
* UI) drives: enumerate processors, read status, start/stop, reset.
|
|
5
|
+
*
|
|
6
|
+
* AF5 splits a base `EventProcessor` (run/error/lifecycle) from
|
|
7
|
+
* `StreamingEventProcessor` (status, reset, segments). kronos mirrors that: the
|
|
8
|
+
* base is here; the streaming-specific operations (`status`, `resetTokens`,
|
|
9
|
+
* `reprocessDeadLetters`) live on {@link TrackingEventProcessor}.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A point-in-time snapshot of a processor's progress — the kronos analog of
|
|
14
|
+
* AF5's `EventTrackerStatus`. kronos processors are single-segment, so this is
|
|
15
|
+
* one snapshot per processor rather than a per-segment map.
|
|
16
|
+
*/
|
|
17
|
+
export interface EventProcessorStatus {
|
|
18
|
+
/** Whether the processor's polling/streaming loop is active. */
|
|
19
|
+
readonly running: boolean
|
|
20
|
+
/** The most recent unrecovered processing error, if any. Cleared on the next
|
|
21
|
+
* successful batch. A non-undefined value is the kronos `isErrorState`. */
|
|
22
|
+
readonly error?: Error
|
|
23
|
+
/** Current committed position in the event stream. */
|
|
24
|
+
readonly position: bigint
|
|
25
|
+
/** Whether the processor has consumed all currently-available events. */
|
|
26
|
+
readonly caughtUp: boolean
|
|
27
|
+
/** Whether the processor is currently replaying (reset) the stream. */
|
|
28
|
+
readonly replaying: boolean
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Common interface for all event processors. Both tracking and subscribing
|
|
33
|
+
* processors satisfy it, so a host can enumerate and operate them uniformly.
|
|
3
34
|
*/
|
|
4
35
|
export interface EventProcessor {
|
|
5
36
|
readonly name: string
|
|
6
37
|
readonly running: boolean
|
|
7
|
-
start
|
|
38
|
+
/** Subscribing processors start synchronously; streaming ones return a promise. */
|
|
39
|
+
start(): Promise<void> | void
|
|
8
40
|
stop(): void
|
|
9
41
|
}
|
package/src/event-source.ts
CHANGED
|
@@ -8,6 +8,16 @@ import type { TrackingToken } from "./tracking-token.js"
|
|
|
8
8
|
export interface SequencedEvent {
|
|
9
9
|
readonly sequence: bigint
|
|
10
10
|
readonly event: EventMessage
|
|
11
|
+
/**
|
|
12
|
+
* The cursor token positioned immediately AFTER this event — i.e. resuming a
|
|
13
|
+
* stream from this token reads events strictly following this one. Supplied
|
|
14
|
+
* by gap-free engines (e.g. Postgres) so the processor persists the engine's
|
|
15
|
+
* own `(commit-order-key, sequence)` cursor verbatim instead of synthesising
|
|
16
|
+
* a position-only token, which would lose the commit-order key and skip
|
|
17
|
+
* events on reopen. Engines with a dense global sequence (in-memory, Axon
|
|
18
|
+
* Server) omit it; the processor then falls back to a position+1 token.
|
|
19
|
+
*/
|
|
20
|
+
readonly token?: TrackingToken
|
|
11
21
|
}
|
|
12
22
|
|
|
13
23
|
/**
|
|
@@ -17,6 +27,13 @@ export interface SequencedEvent {
|
|
|
17
27
|
export interface StreamingCondition {
|
|
18
28
|
/** Position to start streaming from. */
|
|
19
29
|
readonly position: bigint
|
|
30
|
+
/**
|
|
31
|
+
* The resume token. When it carries an engine-specific cursor (e.g. a
|
|
32
|
+
* {@link GapAwareToken} with a commit-order key), the engine resumes exactly
|
|
33
|
+
* from that cursor; otherwise it falls back to {@link position}. Optional so
|
|
34
|
+
* engines that only understand a position can ignore it.
|
|
35
|
+
*/
|
|
36
|
+
readonly token?: TrackingToken
|
|
20
37
|
/** Optional criteria to filter events. When omitted, all events are delivered. */
|
|
21
38
|
readonly criteria?: EventCriteria
|
|
22
39
|
}
|
package/src/index.ts
CHANGED
|
@@ -187,8 +187,8 @@ export {
|
|
|
187
187
|
createEventGateway,
|
|
188
188
|
} from "./event-gateway.js"
|
|
189
189
|
|
|
190
|
-
// Event processor common
|
|
191
|
-
export { type EventProcessor } from "./event-processor.js"
|
|
190
|
+
// Event processor common control + status surface (AF5 EventProcessor analog)
|
|
191
|
+
export { type EventProcessor, type EventProcessorStatus } from "./event-processor.js"
|
|
192
192
|
|
|
193
193
|
// Event source (for processors)
|
|
194
194
|
export {
|
|
@@ -206,7 +206,6 @@ export {
|
|
|
206
206
|
type TrackingEventProcessor,
|
|
207
207
|
type TrackingEventProcessorOptions,
|
|
208
208
|
type EventProcessingErrorHandler,
|
|
209
|
-
loggingErrorHandler,
|
|
210
209
|
propagatingErrorHandler,
|
|
211
210
|
createTrackingEventProcessor,
|
|
212
211
|
} from "./tracking-event-processor.js"
|
|
@@ -236,14 +235,21 @@ export {
|
|
|
236
235
|
export {
|
|
237
236
|
type TrackingToken,
|
|
238
237
|
type GlobalSequenceToken,
|
|
238
|
+
type GapAwareToken,
|
|
239
239
|
type ReplayToken,
|
|
240
|
+
type SerializedToken,
|
|
240
241
|
globalSequenceToken,
|
|
242
|
+
gapAwareToken,
|
|
241
243
|
FIRST_TOKEN,
|
|
242
244
|
LATEST_TOKEN,
|
|
243
245
|
replayToken,
|
|
244
246
|
isReplayToken,
|
|
245
247
|
isGlobalSequenceToken,
|
|
248
|
+
isGapAwareToken,
|
|
246
249
|
advanceToken,
|
|
250
|
+
advanceTokenTo,
|
|
251
|
+
serializeToken,
|
|
252
|
+
deserializeToken,
|
|
247
253
|
isReplaying,
|
|
248
254
|
unwrapToken,
|
|
249
255
|
wasProcessedBeforeReset,
|
|
@@ -308,7 +314,6 @@ export {
|
|
|
308
314
|
export {
|
|
309
315
|
type StreamingEventProcessor,
|
|
310
316
|
type StreamingEventProcessorOptions,
|
|
311
|
-
type EventProcessorStatus,
|
|
312
317
|
createStreamingEventProcessor,
|
|
313
318
|
} from "./streaming-event-processor.js"
|
|
314
319
|
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
createDeadLetterReprocessor,
|
|
15
15
|
} from "./dead-letter-reprocessor.js"
|
|
16
16
|
import type { EventProcessingErrorHandler } from "./tracking-event-processor.js"
|
|
17
|
-
import {
|
|
17
|
+
import { propagatingErrorHandler } from "./tracking-event-processor.js"
|
|
18
18
|
import type { HandlerEnhancerDefinition } from "./handler-enhancer.js"
|
|
19
19
|
import type { TrackingToken } from "./tracking-token.js"
|
|
20
20
|
import {
|
|
@@ -23,6 +23,7 @@ import {
|
|
|
23
23
|
isReplayToken,
|
|
24
24
|
isReplaying,
|
|
25
25
|
advanceToken,
|
|
26
|
+
advanceTokenTo,
|
|
26
27
|
} from "./tracking-token.js"
|
|
27
28
|
import { REPLAY_STATE_KEY } from "./replay-token.js"
|
|
28
29
|
import { applyCorrelationData, type CorrelationDataProvider } from "./correlation-data.js"
|
|
@@ -146,7 +147,7 @@ export function createStreamingEventProcessor(
|
|
|
146
147
|
dlqRetryIntervalMs,
|
|
147
148
|
batchSize = 1,
|
|
148
149
|
errorBackoffMs = 1000,
|
|
149
|
-
errorHandler =
|
|
150
|
+
errorHandler = propagatingErrorHandler(),
|
|
150
151
|
handlerEnhancer,
|
|
151
152
|
onReset,
|
|
152
153
|
} = options
|
|
@@ -216,7 +217,7 @@ export function createStreamingEventProcessor(
|
|
|
216
217
|
}
|
|
217
218
|
|
|
218
219
|
function openStream() {
|
|
219
|
-
stream = eventSource.open({ position: token.position() })
|
|
220
|
+
stream = eventSource.open({ position: token.position(), token })
|
|
220
221
|
stream.setCallback(() => {
|
|
221
222
|
if (isRunning && !processing) {
|
|
222
223
|
scheduleImmediate()
|
|
@@ -312,7 +313,12 @@ export function createStreamingEventProcessor(
|
|
|
312
313
|
|
|
313
314
|
await deliverEvent(sequencedEvent)
|
|
314
315
|
|
|
315
|
-
|
|
316
|
+
// Prefer the engine's own cursor token (carries the commit-order key for
|
|
317
|
+
// gap-free resume); fall back to a position+1 token for dense-sequence
|
|
318
|
+
// engines that don't supply one.
|
|
319
|
+
batchEndToken = sequencedEvent.token
|
|
320
|
+
? advanceTokenTo(batchEndToken, sequencedEvent.token)
|
|
321
|
+
: advanceToken(batchEndToken, sequencedEvent.sequence + 1n)
|
|
316
322
|
}
|
|
317
323
|
|
|
318
324
|
if (tokenStore) {
|
|
@@ -5,7 +5,7 @@ import type { EventHandlerDefinition } from "./event-handler.js"
|
|
|
5
5
|
import type { UoWRunner } from "./unit-of-work.js"
|
|
6
6
|
import { runInNewUoW } from "./unit-of-work.js"
|
|
7
7
|
import type { EventProcessingErrorHandler } from "./tracking-event-processor.js"
|
|
8
|
-
import {
|
|
8
|
+
import { propagatingErrorHandler } from "./tracking-event-processor.js"
|
|
9
9
|
import type { SubscribableEventSource } from "./event-bus.js"
|
|
10
10
|
import type { CommandBus } from "./command-bus.js"
|
|
11
11
|
import type { QueryBus } from "./query-bus.js"
|
|
@@ -98,7 +98,7 @@ export function createSubscribingEventProcessor(
|
|
|
98
98
|
correlationDataProviders,
|
|
99
99
|
onEventDelivery,
|
|
100
100
|
unitOfWorkRunner = runInNewUoW,
|
|
101
|
-
errorHandler =
|
|
101
|
+
errorHandler = propagatingErrorHandler(),
|
|
102
102
|
handlerEnhancer,
|
|
103
103
|
} = options
|
|
104
104
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { emptyMetadata, qualifiedNameToString } from "@kronos-ts/common"
|
|
2
|
+
import type { EventProcessor, EventProcessorStatus } from "./event-processor.js"
|
|
2
3
|
import type { EventHandlerRegistration } from "./handler.js"
|
|
3
4
|
import type { EventHandlerDefinition } from "./event-handler.js"
|
|
4
5
|
import type { StreamableEventSource, MessageStream, SequencedEvent } from "./event-source.js"
|
|
@@ -20,6 +21,7 @@ import {
|
|
|
20
21
|
isReplayToken,
|
|
21
22
|
isReplaying,
|
|
22
23
|
advanceToken,
|
|
24
|
+
advanceTokenTo,
|
|
23
25
|
} from "./tracking-token.js"
|
|
24
26
|
import { REPLAY_STATE_KEY } from "./replay-token.js"
|
|
25
27
|
import { applyCorrelationData, type CorrelationDataProvider } from "./correlation-data.js"
|
|
@@ -43,7 +45,7 @@ import { QUERY_BUS_KEY } from "./emit-update.js"
|
|
|
43
45
|
* Supports replay via {@link resetTokens} — the processor can be stopped,
|
|
44
46
|
* reset to a starting position, and restarted.
|
|
45
47
|
*/
|
|
46
|
-
export interface TrackingEventProcessor {
|
|
48
|
+
export interface TrackingEventProcessor extends EventProcessor {
|
|
47
49
|
readonly name: string
|
|
48
50
|
readonly running: boolean
|
|
49
51
|
/** Current effective position in the event stream. */
|
|
@@ -52,6 +54,11 @@ export interface TrackingEventProcessor {
|
|
|
52
54
|
readonly replaying: boolean
|
|
53
55
|
start(): Promise<void>
|
|
54
56
|
stop(): void
|
|
57
|
+
/**
|
|
58
|
+
* Point-in-time progress snapshot (running / error / position / caughtUp /
|
|
59
|
+
* replaying) — the surface an admin UI reads to show processor health.
|
|
60
|
+
*/
|
|
61
|
+
status(): EventProcessorStatus
|
|
55
62
|
/**
|
|
56
63
|
* Reset the processor to replay events from a starting position.
|
|
57
64
|
* The processor must be stopped before calling this.
|
|
@@ -123,21 +130,13 @@ export interface EventProcessingErrorHandler {
|
|
|
123
130
|
}
|
|
124
131
|
|
|
125
132
|
/**
|
|
126
|
-
*
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
error,
|
|
134
|
-
)
|
|
135
|
-
},
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Rethrows errors, aborting the current batch and triggering rollback.
|
|
133
|
+
* Rethrows errors, aborting the current batch and triggering rollback — the
|
|
134
|
+
* default. A failed handler does NOT advance the token: the batch is rolled
|
|
135
|
+
* back and redelivered (with backoff), so a read-model never silently skips a
|
|
136
|
+
* bad event. Mirrors AF5, whose only live processor error handler is
|
|
137
|
+
* `PropagatingErrorHandler` (the swallow-and-continue handler was retired to
|
|
138
|
+
* legacy). When an automation must move past a poison pill instead of
|
|
139
|
+
* retrying, attach a dead-letter queue.
|
|
141
140
|
*/
|
|
142
141
|
export function propagatingErrorHandler(): EventProcessingErrorHandler {
|
|
143
142
|
return {
|
|
@@ -170,7 +169,7 @@ export function createTrackingEventProcessor(
|
|
|
170
169
|
dlqRetryIntervalMs,
|
|
171
170
|
pollingIntervalMs = 500,
|
|
172
171
|
batchSize = 1,
|
|
173
|
-
errorHandler =
|
|
172
|
+
errorHandler = propagatingErrorHandler(),
|
|
174
173
|
handlerEnhancer,
|
|
175
174
|
onReset,
|
|
176
175
|
} = options
|
|
@@ -226,6 +225,9 @@ export function createTrackingEventProcessor(
|
|
|
226
225
|
let stream: MessageStream<SequencedEvent> | null = null
|
|
227
226
|
let pollTimer: ReturnType<typeof setTimeout> | null = null
|
|
228
227
|
let processing = false
|
|
228
|
+
// Status fields exposed via status() for observability / admin control.
|
|
229
|
+
let caughtUp = false
|
|
230
|
+
let lastError: Error | undefined
|
|
229
231
|
|
|
230
232
|
async function initialize() {
|
|
231
233
|
if (tokenStore) {
|
|
@@ -238,7 +240,7 @@ export function createTrackingEventProcessor(
|
|
|
238
240
|
}
|
|
239
241
|
|
|
240
242
|
function openStream() {
|
|
241
|
-
stream = eventSource.open({ position: token.position() })
|
|
243
|
+
stream = eventSource.open({ position: token.position(), token })
|
|
242
244
|
stream.setCallback(() => {
|
|
243
245
|
if (isRunning && !processing) {
|
|
244
246
|
scheduleImmediate()
|
|
@@ -277,14 +279,22 @@ export function createTrackingEventProcessor(
|
|
|
277
279
|
}
|
|
278
280
|
|
|
279
281
|
if (batch.length > 0) {
|
|
282
|
+
caughtUp = false
|
|
280
283
|
await processBatch(batch)
|
|
284
|
+
// A clean batch clears any prior error — the processor has recovered.
|
|
285
|
+
lastError = undefined
|
|
281
286
|
if (isRunning) {
|
|
282
287
|
if (stream!.hasNextAvailable()) {
|
|
283
288
|
scheduleImmediate()
|
|
289
|
+
} else {
|
|
290
|
+
// Drained everything currently available — caught up until the
|
|
291
|
+
// stream callback wakes us with new events.
|
|
292
|
+
caughtUp = true
|
|
284
293
|
}
|
|
285
|
-
// else: stream callback will wake us when events arrive
|
|
286
294
|
}
|
|
287
295
|
} else {
|
|
296
|
+
// No events available — the processor is caught up with the stream.
|
|
297
|
+
caughtUp = true
|
|
288
298
|
// If replay is done and no more events, unwrap
|
|
289
299
|
if (isReplayToken(token)) {
|
|
290
300
|
token = globalSequenceToken(token.position())
|
|
@@ -298,6 +308,7 @@ export function createTrackingEventProcessor(
|
|
|
298
308
|
}
|
|
299
309
|
}
|
|
300
310
|
} catch (err) {
|
|
311
|
+
lastError = err instanceof Error ? err : new Error(String(err))
|
|
301
312
|
console.error(`Event processor "${name}" error during poll:`, err)
|
|
302
313
|
// Realign the live stream to the committed checkpoint. During batch
|
|
303
314
|
// accumulation the stream cursor (and any read-ahead buffer) advanced
|
|
@@ -324,7 +335,12 @@ export function createTrackingEventProcessor(
|
|
|
324
335
|
|
|
325
336
|
await deliverEvent(sequencedEvent)
|
|
326
337
|
|
|
327
|
-
|
|
338
|
+
// Prefer the engine's own cursor token (carries the commit-order key for
|
|
339
|
+
// gap-free resume); fall back to a position+1 token for dense-sequence
|
|
340
|
+
// engines that don't supply one.
|
|
341
|
+
batchEndToken = sequencedEvent.token
|
|
342
|
+
? advanceTokenTo(batchEndToken, sequencedEvent.token)
|
|
343
|
+
: advanceToken(batchEndToken, sequencedEvent.sequence + 1n)
|
|
328
344
|
}
|
|
329
345
|
|
|
330
346
|
if (tokenStore) {
|
|
@@ -412,6 +428,16 @@ export function createTrackingEventProcessor(
|
|
|
412
428
|
get position() { return token.position() },
|
|
413
429
|
get replaying() { return isReplaying(token) },
|
|
414
430
|
|
|
431
|
+
status(): EventProcessorStatus {
|
|
432
|
+
return {
|
|
433
|
+
running: isRunning,
|
|
434
|
+
error: lastError,
|
|
435
|
+
position: token.position(),
|
|
436
|
+
caughtUp,
|
|
437
|
+
replaying: isReplaying(token),
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
|
|
415
441
|
async start() {
|
|
416
442
|
if (isRunning) return
|
|
417
443
|
await initialize()
|