@beignet/provider-event-bus-redis 0.0.44 → 0.0.45
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/CHANGELOG.md +6 -0
- package/README.md +13 -3
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -33
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +131 -36
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @beignet/provider-event-bus-redis
|
|
2
2
|
|
|
3
|
+
## 0.0.45
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- b9df150: Tighten Redis event-bus lifecycle handling, preserve job payloads across durable transports, verify Stripe webhooks asynchronously with real signature coverage, and send bounded S3 upload lengths.
|
|
8
|
+
|
|
3
9
|
## 0.0.44
|
|
4
10
|
|
|
5
11
|
## 0.0.43
|
package/README.md
CHANGED
|
@@ -130,17 +130,27 @@ Use `createRedisEventBus(...)` when your app owns Redis clients:
|
|
|
130
130
|
import Redis from "ioredis";
|
|
131
131
|
import { createRedisEventBus } from "@beignet/provider-event-bus-redis";
|
|
132
132
|
|
|
133
|
+
const publisher = new Redis(process.env.REDIS_EVENT_BUS_URL);
|
|
134
|
+
const subscriber = new Redis(process.env.REDIS_EVENT_BUS_URL);
|
|
133
135
|
const eventBus = createRedisEventBus({
|
|
134
|
-
publisher
|
|
135
|
-
subscriber
|
|
136
|
+
publisher,
|
|
137
|
+
subscriber,
|
|
136
138
|
channelPrefix: "my-app:events:",
|
|
137
139
|
});
|
|
140
|
+
|
|
141
|
+
// During app shutdown:
|
|
142
|
+
await eventBus.stop();
|
|
143
|
+
await Promise.all([publisher.quit(), subscriber.quit()]);
|
|
138
144
|
```
|
|
139
145
|
|
|
140
146
|
Register listeners during startup before handling traffic. The `EventBusPort`
|
|
141
147
|
subscription API is synchronous, while Redis subscription acknowledgement is
|
|
142
148
|
asynchronous, so messages published immediately after a new subscription may be
|
|
143
|
-
missed during startup races.
|
|
149
|
+
missed during startup races. Await `stop()` to detach Beignet's message
|
|
150
|
+
listener, cancel pending subscription retries, and best-effort unsubscribe the
|
|
151
|
+
channels registered through that adapter. It does not close the caller-owned
|
|
152
|
+
Redis clients. Stopping is terminal for that adapter: later subscription
|
|
153
|
+
attempts reject instead of creating handlers that cannot receive messages.
|
|
144
154
|
|
|
145
155
|
## Delivery semantics
|
|
146
156
|
|
package/dist/index.d.ts
CHANGED
|
@@ -68,6 +68,20 @@ export interface CreateRedisEventBusProviderOptions {
|
|
|
68
68
|
retryStrategy?: (times: number) => number | null;
|
|
69
69
|
db?: number;
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Direct Redis event-bus adapter with explicit subscription cleanup.
|
|
73
|
+
*
|
|
74
|
+
* `stop()` detaches the message listener, cancels subscription retries, and
|
|
75
|
+
* releases channels subscribed by this adapter. The injected Redis clients
|
|
76
|
+
* remain caller-owned.
|
|
77
|
+
*/
|
|
78
|
+
export interface RedisEventBus extends EventBusPort {
|
|
79
|
+
/**
|
|
80
|
+
* Stop local delivery and best-effort unsubscribe the adapter's channels
|
|
81
|
+
* without closing the caller-owned Redis clients.
|
|
82
|
+
*/
|
|
83
|
+
stop(): Promise<void>;
|
|
84
|
+
}
|
|
85
|
+
export declare function createRedisEventBus(options: CreateRedisEventBusOptions): RedisEventBus;
|
|
72
86
|
export declare function createRedisEventBusProvider(options?: CreateRedisEventBusProviderOptions): RedisEventBusProvider;
|
|
73
87
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -115,9 +115,13 @@ function createRedisEventBusRuntime(options) {
|
|
|
115
115
|
const channelPrefix = options.channelPrefix ?? DEFAULT_CHANNEL_PREFIX;
|
|
116
116
|
const handlers = new Map();
|
|
117
117
|
const subscribedChannels = new Map();
|
|
118
|
+
const latestSubscriptionAttempts = new Map();
|
|
118
119
|
const subscriptionRetryAttempts = new Map();
|
|
119
120
|
const subscriptionRetryTimers = new Map();
|
|
121
|
+
const subscriptionPromises = new Map();
|
|
122
|
+
const channelCleanupPromises = new Set();
|
|
120
123
|
let stopped = false;
|
|
124
|
+
let stopPromise;
|
|
121
125
|
const instrumentation = createProviderInstrumentation(options.instrumentation, {
|
|
122
126
|
providerName: "event-bus-redis",
|
|
123
127
|
watcher: "eventBus",
|
|
@@ -231,9 +235,13 @@ function createRedisEventBusRuntime(options) {
|
|
|
231
235
|
}
|
|
232
236
|
const attempt = Symbol(channel);
|
|
233
237
|
subscribedChannels.set(channel, attempt);
|
|
238
|
+
latestSubscriptionAttempts.set(channel, attempt);
|
|
234
239
|
const onFailure = (error) => {
|
|
235
240
|
if (subscribedChannels.get(channel) === attempt) {
|
|
236
241
|
subscribedChannels.delete(channel);
|
|
242
|
+
if (latestSubscriptionAttempts.get(channel) === attempt) {
|
|
243
|
+
latestSubscriptionAttempts.delete(channel);
|
|
244
|
+
}
|
|
237
245
|
scheduleSubscriptionRetry(eventName);
|
|
238
246
|
}
|
|
239
247
|
reportSubscriberError(error, {
|
|
@@ -243,16 +251,63 @@ function createRedisEventBusRuntime(options) {
|
|
|
243
251
|
});
|
|
244
252
|
};
|
|
245
253
|
try {
|
|
246
|
-
Promise.resolve(options.subscriber.subscribe(channel)).then(() => {
|
|
254
|
+
const subscriptionPromise = Promise.resolve(options.subscriber.subscribe(channel)).then(() => {
|
|
247
255
|
if (subscribedChannels.get(channel) === attempt) {
|
|
248
256
|
subscriptionRetryAttempts.delete(channel);
|
|
249
257
|
}
|
|
250
258
|
}, onFailure);
|
|
259
|
+
subscriptionPromises.set(channel, subscriptionPromise);
|
|
260
|
+
void subscriptionPromise.then(() => {
|
|
261
|
+
if (subscriptionPromises.get(channel) === subscriptionPromise) {
|
|
262
|
+
subscriptionPromises.delete(channel);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
251
265
|
}
|
|
252
266
|
catch (error) {
|
|
253
267
|
onFailure(error);
|
|
254
268
|
}
|
|
255
269
|
};
|
|
270
|
+
const unsubscribeRedisChannel = async (channel, eventName, subscriptionPromise = subscriptionPromises.get(channel), expectedAttempt) => {
|
|
271
|
+
let releasesExpectedAttempt = false;
|
|
272
|
+
try {
|
|
273
|
+
await subscriptionPromise;
|
|
274
|
+
while (expectedAttempt &&
|
|
275
|
+
latestSubscriptionAttempts.get(channel) !== expectedAttempt) {
|
|
276
|
+
const newerAttempt = latestSubscriptionAttempts.get(channel);
|
|
277
|
+
if (!newerAttempt)
|
|
278
|
+
break;
|
|
279
|
+
await subscriptionPromises.get(channel);
|
|
280
|
+
if (latestSubscriptionAttempts.get(channel) !== newerAttempt) {
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
if (subscribedChannels.get(channel) === newerAttempt)
|
|
284
|
+
return;
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
if (expectedAttempt && subscribedChannels.has(channel))
|
|
288
|
+
return;
|
|
289
|
+
releasesExpectedAttempt = expectedAttempt !== undefined;
|
|
290
|
+
await options.subscriber.unsubscribe(channel);
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
reportSubscriberError(error, {
|
|
294
|
+
operation: "unsubscribe",
|
|
295
|
+
channel,
|
|
296
|
+
eventName,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
finally {
|
|
300
|
+
if (releasesExpectedAttempt &&
|
|
301
|
+
expectedAttempt &&
|
|
302
|
+
latestSubscriptionAttempts.get(channel) === expectedAttempt) {
|
|
303
|
+
latestSubscriptionAttempts.delete(channel);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
const trackChannelCleanup = (cleanup) => {
|
|
308
|
+
channelCleanupPromises.add(cleanup);
|
|
309
|
+
void cleanup.then(() => channelCleanupPromises.delete(cleanup));
|
|
310
|
+
};
|
|
256
311
|
const unsubscribeChannel = (eventName) => {
|
|
257
312
|
const channel = channelForEvent(channelPrefix, eventName);
|
|
258
313
|
const retryTimer = subscriptionRetryTimers.get(channel);
|
|
@@ -261,22 +316,13 @@ function createRedisEventBusRuntime(options) {
|
|
|
261
316
|
subscriptionRetryTimers.delete(channel);
|
|
262
317
|
}
|
|
263
318
|
subscriptionRetryAttempts.delete(channel);
|
|
264
|
-
|
|
319
|
+
const attempt = subscribedChannels.get(channel);
|
|
320
|
+
if (!attempt)
|
|
265
321
|
return;
|
|
322
|
+
const subscriptionPromise = subscriptionPromises.get(channel);
|
|
266
323
|
subscribedChannels.delete(channel);
|
|
267
|
-
const
|
|
268
|
-
|
|
269
|
-
operation: "unsubscribe",
|
|
270
|
-
channel,
|
|
271
|
-
eventName,
|
|
272
|
-
});
|
|
273
|
-
};
|
|
274
|
-
try {
|
|
275
|
-
Promise.resolve(options.subscriber.unsubscribe(channel)).catch(onFailure);
|
|
276
|
-
}
|
|
277
|
-
catch (error) {
|
|
278
|
-
onFailure(error);
|
|
279
|
-
}
|
|
324
|
+
const cleanup = unsubscribeRedisChannel(channel, eventName, subscriptionPromise, attempt);
|
|
325
|
+
trackChannelCleanup(cleanup);
|
|
280
326
|
};
|
|
281
327
|
const eventBus = {
|
|
282
328
|
async publish(event, payload, publishOptions) {
|
|
@@ -308,6 +354,9 @@ function createRedisEventBusRuntime(options) {
|
|
|
308
354
|
}
|
|
309
355
|
},
|
|
310
356
|
subscribe(event, handler) {
|
|
357
|
+
if (stopped) {
|
|
358
|
+
throw new Error("Cannot subscribe to a Redis event bus after it has stopped.");
|
|
359
|
+
}
|
|
311
360
|
let eventHandlers = handlers.get(event.name);
|
|
312
361
|
if (!eventHandlers) {
|
|
313
362
|
eventHandlers = new Set();
|
|
@@ -327,24 +376,35 @@ function createRedisEventBusRuntime(options) {
|
|
|
327
376
|
};
|
|
328
377
|
},
|
|
329
378
|
};
|
|
379
|
+
const stop = () => {
|
|
380
|
+
if (stopPromise)
|
|
381
|
+
return stopPromise;
|
|
382
|
+
stopped = true;
|
|
383
|
+
const channels = [...subscribedChannels.keys()];
|
|
384
|
+
for (const timer of subscriptionRetryTimers.values()) {
|
|
385
|
+
clearTimeout(timer);
|
|
386
|
+
}
|
|
387
|
+
subscriptionRetryTimers.clear();
|
|
388
|
+
subscriptionRetryAttempts.clear();
|
|
389
|
+
subscribedChannels.clear();
|
|
390
|
+
handlers.clear();
|
|
391
|
+
if (options.subscriber.off) {
|
|
392
|
+
options.subscriber.off("message", messageHandler);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
options.subscriber.removeListener?.("message", messageHandler);
|
|
396
|
+
}
|
|
397
|
+
stopPromise = Promise.all([
|
|
398
|
+
...channelCleanupPromises,
|
|
399
|
+
...channels.map((channel) => unsubscribeRedisChannel(channel, eventNameForChannel(channelPrefix, channel))),
|
|
400
|
+
]).then(() => {
|
|
401
|
+
latestSubscriptionAttempts.clear();
|
|
402
|
+
});
|
|
403
|
+
return stopPromise;
|
|
404
|
+
};
|
|
330
405
|
return {
|
|
331
|
-
eventBus,
|
|
332
|
-
stop
|
|
333
|
-
stopped = true;
|
|
334
|
-
for (const timer of subscriptionRetryTimers.values()) {
|
|
335
|
-
clearTimeout(timer);
|
|
336
|
-
}
|
|
337
|
-
subscriptionRetryTimers.clear();
|
|
338
|
-
subscriptionRetryAttempts.clear();
|
|
339
|
-
subscribedChannels.clear();
|
|
340
|
-
handlers.clear();
|
|
341
|
-
if (options.subscriber.off) {
|
|
342
|
-
options.subscriber.off("message", messageHandler);
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
options.subscriber.removeListener?.("message", messageHandler);
|
|
346
|
-
}
|
|
347
|
-
},
|
|
406
|
+
eventBus: Object.assign(eventBus, { stop }),
|
|
407
|
+
stop,
|
|
348
408
|
};
|
|
349
409
|
}
|
|
350
410
|
export function createRedisEventBus(options) {
|
|
@@ -473,7 +533,7 @@ export function createRedisEventBusProvider(options = {}) {
|
|
|
473
533
|
},
|
|
474
534
|
},
|
|
475
535
|
async stop() {
|
|
476
|
-
eventBusRuntime.stop();
|
|
536
|
+
await eventBusRuntime.stop();
|
|
477
537
|
try {
|
|
478
538
|
await subscriber.quit();
|
|
479
539
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beignet/provider-event-bus-redis",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.45",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Redis Pub/Sub event bus provider for Beignet - implements EventBusPort for cross-process best-effort delivery",
|
|
6
6
|
"main": "./dist/index.js",
|
package/src/index.ts
CHANGED
|
@@ -238,9 +238,24 @@ async function checkRedisEventBusHealth(
|
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Direct Redis event-bus adapter with explicit subscription cleanup.
|
|
243
|
+
*
|
|
244
|
+
* `stop()` detaches the message listener, cancels subscription retries, and
|
|
245
|
+
* releases channels subscribed by this adapter. The injected Redis clients
|
|
246
|
+
* remain caller-owned.
|
|
247
|
+
*/
|
|
248
|
+
export interface RedisEventBus extends EventBusPort {
|
|
249
|
+
/**
|
|
250
|
+
* Stop local delivery and best-effort unsubscribe the adapter's channels
|
|
251
|
+
* without closing the caller-owned Redis clients.
|
|
252
|
+
*/
|
|
253
|
+
stop(): Promise<void>;
|
|
254
|
+
}
|
|
255
|
+
|
|
241
256
|
interface RedisEventBusRuntime {
|
|
242
|
-
eventBus:
|
|
243
|
-
stop(): void
|
|
257
|
+
eventBus: RedisEventBus;
|
|
258
|
+
stop(): Promise<void>;
|
|
244
259
|
}
|
|
245
260
|
|
|
246
261
|
function createRedisEventBusRuntime(
|
|
@@ -257,12 +272,16 @@ function createRedisEventBusRuntime(
|
|
|
257
272
|
>
|
|
258
273
|
>();
|
|
259
274
|
const subscribedChannels = new Map<string, symbol>();
|
|
275
|
+
const latestSubscriptionAttempts = new Map<string, symbol>();
|
|
260
276
|
const subscriptionRetryAttempts = new Map<string, number>();
|
|
261
277
|
const subscriptionRetryTimers = new Map<
|
|
262
278
|
string,
|
|
263
279
|
ReturnType<typeof setTimeout>
|
|
264
280
|
>();
|
|
281
|
+
const subscriptionPromises = new Map<string, Promise<void>>();
|
|
282
|
+
const channelCleanupPromises = new Set<Promise<void>>();
|
|
265
283
|
let stopped = false;
|
|
284
|
+
let stopPromise: Promise<void> | undefined;
|
|
266
285
|
const instrumentation = createProviderInstrumentation(
|
|
267
286
|
options.instrumentation,
|
|
268
287
|
{
|
|
@@ -412,10 +431,14 @@ function createRedisEventBusRuntime(
|
|
|
412
431
|
}
|
|
413
432
|
const attempt = Symbol(channel);
|
|
414
433
|
subscribedChannels.set(channel, attempt);
|
|
434
|
+
latestSubscriptionAttempts.set(channel, attempt);
|
|
415
435
|
|
|
416
436
|
const onFailure = (error: unknown) => {
|
|
417
437
|
if (subscribedChannels.get(channel) === attempt) {
|
|
418
438
|
subscribedChannels.delete(channel);
|
|
439
|
+
if (latestSubscriptionAttempts.get(channel) === attempt) {
|
|
440
|
+
latestSubscriptionAttempts.delete(channel);
|
|
441
|
+
}
|
|
419
442
|
scheduleSubscriptionRetry(eventName);
|
|
420
443
|
}
|
|
421
444
|
reportSubscriberError(error, {
|
|
@@ -426,16 +449,71 @@ function createRedisEventBusRuntime(
|
|
|
426
449
|
};
|
|
427
450
|
|
|
428
451
|
try {
|
|
429
|
-
Promise.resolve(
|
|
452
|
+
const subscriptionPromise = Promise.resolve(
|
|
453
|
+
options.subscriber.subscribe(channel),
|
|
454
|
+
).then(() => {
|
|
430
455
|
if (subscribedChannels.get(channel) === attempt) {
|
|
431
456
|
subscriptionRetryAttempts.delete(channel);
|
|
432
457
|
}
|
|
433
458
|
}, onFailure);
|
|
459
|
+
subscriptionPromises.set(channel, subscriptionPromise);
|
|
460
|
+
void subscriptionPromise.then(() => {
|
|
461
|
+
if (subscriptionPromises.get(channel) === subscriptionPromise) {
|
|
462
|
+
subscriptionPromises.delete(channel);
|
|
463
|
+
}
|
|
464
|
+
});
|
|
434
465
|
} catch (error) {
|
|
435
466
|
onFailure(error);
|
|
436
467
|
}
|
|
437
468
|
};
|
|
438
469
|
|
|
470
|
+
const unsubscribeRedisChannel = async (
|
|
471
|
+
channel: string,
|
|
472
|
+
eventName: string | undefined,
|
|
473
|
+
subscriptionPromise = subscriptionPromises.get(channel),
|
|
474
|
+
expectedAttempt?: symbol,
|
|
475
|
+
): Promise<void> => {
|
|
476
|
+
let releasesExpectedAttempt = false;
|
|
477
|
+
try {
|
|
478
|
+
await subscriptionPromise;
|
|
479
|
+
while (
|
|
480
|
+
expectedAttempt &&
|
|
481
|
+
latestSubscriptionAttempts.get(channel) !== expectedAttempt
|
|
482
|
+
) {
|
|
483
|
+
const newerAttempt = latestSubscriptionAttempts.get(channel);
|
|
484
|
+
if (!newerAttempt) break;
|
|
485
|
+
await subscriptionPromises.get(channel);
|
|
486
|
+
if (latestSubscriptionAttempts.get(channel) !== newerAttempt) {
|
|
487
|
+
continue;
|
|
488
|
+
}
|
|
489
|
+
if (subscribedChannels.get(channel) === newerAttempt) return;
|
|
490
|
+
break;
|
|
491
|
+
}
|
|
492
|
+
if (expectedAttempt && subscribedChannels.has(channel)) return;
|
|
493
|
+
releasesExpectedAttempt = expectedAttempt !== undefined;
|
|
494
|
+
await options.subscriber.unsubscribe(channel);
|
|
495
|
+
} catch (error) {
|
|
496
|
+
reportSubscriberError(error, {
|
|
497
|
+
operation: "unsubscribe",
|
|
498
|
+
channel,
|
|
499
|
+
eventName,
|
|
500
|
+
});
|
|
501
|
+
} finally {
|
|
502
|
+
if (
|
|
503
|
+
releasesExpectedAttempt &&
|
|
504
|
+
expectedAttempt &&
|
|
505
|
+
latestSubscriptionAttempts.get(channel) === expectedAttempt
|
|
506
|
+
) {
|
|
507
|
+
latestSubscriptionAttempts.delete(channel);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
};
|
|
511
|
+
|
|
512
|
+
const trackChannelCleanup = (cleanup: Promise<void>) => {
|
|
513
|
+
channelCleanupPromises.add(cleanup);
|
|
514
|
+
void cleanup.then(() => channelCleanupPromises.delete(cleanup));
|
|
515
|
+
};
|
|
516
|
+
|
|
439
517
|
const unsubscribeChannel = (eventName: string) => {
|
|
440
518
|
const channel = channelForEvent(channelPrefix, eventName);
|
|
441
519
|
const retryTimer = subscriptionRetryTimers.get(channel);
|
|
@@ -444,22 +522,17 @@ function createRedisEventBusRuntime(
|
|
|
444
522
|
subscriptionRetryTimers.delete(channel);
|
|
445
523
|
}
|
|
446
524
|
subscriptionRetryAttempts.delete(channel);
|
|
447
|
-
|
|
525
|
+
const attempt = subscribedChannels.get(channel);
|
|
526
|
+
if (!attempt) return;
|
|
527
|
+
const subscriptionPromise = subscriptionPromises.get(channel);
|
|
448
528
|
subscribedChannels.delete(channel);
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
};
|
|
457
|
-
|
|
458
|
-
try {
|
|
459
|
-
Promise.resolve(options.subscriber.unsubscribe(channel)).catch(onFailure);
|
|
460
|
-
} catch (error) {
|
|
461
|
-
onFailure(error);
|
|
462
|
-
}
|
|
529
|
+
const cleanup = unsubscribeRedisChannel(
|
|
530
|
+
channel,
|
|
531
|
+
eventName,
|
|
532
|
+
subscriptionPromise,
|
|
533
|
+
attempt,
|
|
534
|
+
);
|
|
535
|
+
trackChannelCleanup(cleanup);
|
|
463
536
|
};
|
|
464
537
|
|
|
465
538
|
const eventBus: EventBusPort = {
|
|
@@ -502,6 +575,12 @@ function createRedisEventBusRuntime(
|
|
|
502
575
|
options?: { trace?: TraceCarrier },
|
|
503
576
|
) => void | Promise<void>,
|
|
504
577
|
) {
|
|
578
|
+
if (stopped) {
|
|
579
|
+
throw new Error(
|
|
580
|
+
"Cannot subscribe to a Redis event bus after it has stopped.",
|
|
581
|
+
);
|
|
582
|
+
}
|
|
583
|
+
|
|
505
584
|
let eventHandlers = handlers.get(event.name);
|
|
506
585
|
if (!eventHandlers) {
|
|
507
586
|
eventHandlers = new Set();
|
|
@@ -533,29 +612,45 @@ function createRedisEventBusRuntime(
|
|
|
533
612
|
},
|
|
534
613
|
};
|
|
535
614
|
|
|
615
|
+
const stop = (): Promise<void> => {
|
|
616
|
+
if (stopPromise) return stopPromise;
|
|
617
|
+
stopped = true;
|
|
618
|
+
const channels = [...subscribedChannels.keys()];
|
|
619
|
+
for (const timer of subscriptionRetryTimers.values()) {
|
|
620
|
+
clearTimeout(timer);
|
|
621
|
+
}
|
|
622
|
+
subscriptionRetryTimers.clear();
|
|
623
|
+
subscriptionRetryAttempts.clear();
|
|
624
|
+
subscribedChannels.clear();
|
|
625
|
+
handlers.clear();
|
|
626
|
+
if (options.subscriber.off) {
|
|
627
|
+
options.subscriber.off("message", messageHandler);
|
|
628
|
+
} else {
|
|
629
|
+
options.subscriber.removeListener?.("message", messageHandler);
|
|
630
|
+
}
|
|
631
|
+
stopPromise = Promise.all([
|
|
632
|
+
...channelCleanupPromises,
|
|
633
|
+
...channels.map((channel) =>
|
|
634
|
+
unsubscribeRedisChannel(
|
|
635
|
+
channel,
|
|
636
|
+
eventNameForChannel(channelPrefix, channel),
|
|
637
|
+
),
|
|
638
|
+
),
|
|
639
|
+
]).then(() => {
|
|
640
|
+
latestSubscriptionAttempts.clear();
|
|
641
|
+
});
|
|
642
|
+
return stopPromise;
|
|
643
|
+
};
|
|
644
|
+
|
|
536
645
|
return {
|
|
537
|
-
eventBus,
|
|
538
|
-
stop
|
|
539
|
-
stopped = true;
|
|
540
|
-
for (const timer of subscriptionRetryTimers.values()) {
|
|
541
|
-
clearTimeout(timer);
|
|
542
|
-
}
|
|
543
|
-
subscriptionRetryTimers.clear();
|
|
544
|
-
subscriptionRetryAttempts.clear();
|
|
545
|
-
subscribedChannels.clear();
|
|
546
|
-
handlers.clear();
|
|
547
|
-
if (options.subscriber.off) {
|
|
548
|
-
options.subscriber.off("message", messageHandler);
|
|
549
|
-
} else {
|
|
550
|
-
options.subscriber.removeListener?.("message", messageHandler);
|
|
551
|
-
}
|
|
552
|
-
},
|
|
646
|
+
eventBus: Object.assign(eventBus, { stop }),
|
|
647
|
+
stop,
|
|
553
648
|
};
|
|
554
649
|
}
|
|
555
650
|
|
|
556
651
|
export function createRedisEventBus(
|
|
557
652
|
options: CreateRedisEventBusOptions,
|
|
558
|
-
):
|
|
653
|
+
): RedisEventBus {
|
|
559
654
|
return createRedisEventBusRuntime(options).eventBus;
|
|
560
655
|
}
|
|
561
656
|
|
|
@@ -706,7 +801,7 @@ export function createRedisEventBusProvider(
|
|
|
706
801
|
},
|
|
707
802
|
} satisfies RedisEventBusProviderPorts,
|
|
708
803
|
async stop() {
|
|
709
|
-
eventBusRuntime.stop();
|
|
804
|
+
await eventBusRuntime.stop();
|
|
710
805
|
try {
|
|
711
806
|
await subscriber.quit();
|
|
712
807
|
} catch {
|