@memberjunction/queue 5.33.0 → 5.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generic/QueueBase.d.ts +24 -1
- package/dist/generic/QueueBase.d.ts.map +1 -1
- package/dist/generic/QueueBase.js +46 -3
- package/dist/generic/QueueBase.js.map +1 -1
- package/dist/generic/QueueManager.d.ts +10 -2
- package/dist/generic/QueueManager.d.ts.map +1 -1
- package/dist/generic/QueueManager.js +25 -1
- package/dist/generic/QueueManager.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UserInfo } from '@memberjunction/core';
|
|
2
2
|
import { MJQueueEntity, MJQueueTaskEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { IShutdownable } from '@memberjunction/global';
|
|
3
4
|
export declare class TaskResult {
|
|
4
5
|
success: boolean;
|
|
5
6
|
userMessage: string;
|
|
@@ -30,16 +31,38 @@ export declare class TaskBase {
|
|
|
30
31
|
get Status(): TaskStatus;
|
|
31
32
|
set Status(value: TaskStatus);
|
|
32
33
|
}
|
|
33
|
-
export declare abstract class QueueBase {
|
|
34
|
+
export declare abstract class QueueBase implements IShutdownable {
|
|
34
35
|
private _queue;
|
|
35
36
|
private _queueTypeId;
|
|
36
37
|
protected _contextUser: UserInfo;
|
|
37
38
|
private _maxTasks;
|
|
38
39
|
private _checkInterval;
|
|
39
40
|
private _queueRecord;
|
|
41
|
+
private _stopped;
|
|
42
|
+
private _pendingTimer;
|
|
40
43
|
constructor(QueueRecord: MJQueueEntity, QueueTypeID: string, ContextUser: UserInfo);
|
|
41
44
|
get QueueID(): string;
|
|
42
45
|
get QueueTypeID(): string;
|
|
46
|
+
/**
|
|
47
|
+
* `IShutdownable` identity, surfaced in shutdown logs.
|
|
48
|
+
*/
|
|
49
|
+
get ShutdownName(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Whether `Stop()` has been invoked. Once stopped, no further `ProcessTasks`
|
|
52
|
+
* iterations are scheduled and `AddTask` is rejected.
|
|
53
|
+
*/
|
|
54
|
+
get IsStopped(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Stops the recursive `ProcessTasks` loop, cancels any pending timer, and
|
|
57
|
+
* marks the queue as stopped so subsequent `AddTask` calls fail-fast. Idempotent.
|
|
58
|
+
* Implements `IShutdownable.Shutdown` so `ShutdownRegistry.ShutdownAll()` can
|
|
59
|
+
* drain queues during graceful shutdown.
|
|
60
|
+
*/
|
|
61
|
+
Stop(): void;
|
|
62
|
+
/**
|
|
63
|
+
* `IShutdownable` entry point. Aliased to `Stop()`.
|
|
64
|
+
*/
|
|
65
|
+
Shutdown(): void;
|
|
43
66
|
private _processing;
|
|
44
67
|
protected ProcessTasks(): void;
|
|
45
68
|
AddTask(task: TaskBase): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueBase.d.ts","sourceRoot":"","sources":["../../src/generic/QueueBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueBase.d.ts","sourceRoot":"","sources":["../../src/generic/QueueBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAc,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGnE,qBAAa,UAAU;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,GAAG,CAAA;IACX,SAAS,EAAE,GAAG,CAAA;CACf;AAGD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAGpE,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,OAAO,CAAkC;IAEjD,IAAW,OAAO,IAAI,WAAW,CAGhC;IACD,IAAW,IAAI,IAAI,GAAG,CAGrB;IACD,IAAW,EAAE,IAAI,MAAM,CAEtB;gBACY,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW;IAM3E,IAAW,UAAU,IAAI,iBAAiB,CAEzC;IAED,IAAW,MAAM,IAAI,UAAU,CAE9B;IACD,IAAW,MAAM,CAAC,KAAK,EAAE,UAAU,EAElC;CAEF;AAGD,8BAAsB,SAAU,YAAW,aAAa;IACtD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAA;IAChC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,cAAc,CAAe;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,aAAa,CAA8C;gBAEvD,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ;IAMlF,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;;OAGG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;;;;OAKG;IACI,IAAI,IAAI,IAAI;IAQnB;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB,OAAO,CAAC,WAAW,CAAkB;IACrC,SAAS,CAAC,YAAY;IAoCtB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAkBhC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;cAE1E,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA8B9E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;CAGtC"}
|
|
@@ -40,6 +40,8 @@ export class QueueBase {
|
|
|
40
40
|
this._queue = [];
|
|
41
41
|
this._maxTasks = 3; // move to metadata or config param
|
|
42
42
|
this._checkInterval = 250; // move to metadata or config param
|
|
43
|
+
this._stopped = false;
|
|
44
|
+
this._pendingTimer = null;
|
|
43
45
|
this._processing = false;
|
|
44
46
|
this._queueRecord = QueueRecord;
|
|
45
47
|
this._queueTypeId = QueueTypeID;
|
|
@@ -51,7 +53,42 @@ export class QueueBase {
|
|
|
51
53
|
get QueueTypeID() {
|
|
52
54
|
return this._queueTypeId;
|
|
53
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* `IShutdownable` identity, surfaced in shutdown logs.
|
|
58
|
+
*/
|
|
59
|
+
get ShutdownName() {
|
|
60
|
+
return `QueueBase[${this._queueRecord?.Name ?? this._queueTypeId}]`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Whether `Stop()` has been invoked. Once stopped, no further `ProcessTasks`
|
|
64
|
+
* iterations are scheduled and `AddTask` is rejected.
|
|
65
|
+
*/
|
|
66
|
+
get IsStopped() {
|
|
67
|
+
return this._stopped;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Stops the recursive `ProcessTasks` loop, cancels any pending timer, and
|
|
71
|
+
* marks the queue as stopped so subsequent `AddTask` calls fail-fast. Idempotent.
|
|
72
|
+
* Implements `IShutdownable.Shutdown` so `ShutdownRegistry.ShutdownAll()` can
|
|
73
|
+
* drain queues during graceful shutdown.
|
|
74
|
+
*/
|
|
75
|
+
Stop() {
|
|
76
|
+
this._stopped = true;
|
|
77
|
+
if (this._pendingTimer) {
|
|
78
|
+
clearTimeout(this._pendingTimer);
|
|
79
|
+
this._pendingTimer = null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* `IShutdownable` entry point. Aliased to `Stop()`.
|
|
84
|
+
*/
|
|
85
|
+
Shutdown() {
|
|
86
|
+
this.Stop();
|
|
87
|
+
}
|
|
54
88
|
ProcessTasks() {
|
|
89
|
+
if (this._stopped) {
|
|
90
|
+
return; // Don't reschedule once stopped.
|
|
91
|
+
}
|
|
55
92
|
if (!this._processing) {
|
|
56
93
|
try {
|
|
57
94
|
this._processing = true;
|
|
@@ -73,13 +110,19 @@ export class QueueBase {
|
|
|
73
110
|
}
|
|
74
111
|
finally {
|
|
75
112
|
this._processing = false;
|
|
76
|
-
|
|
77
|
-
this.
|
|
78
|
-
|
|
113
|
+
if (!this._stopped) {
|
|
114
|
+
this._pendingTimer = setTimeout(() => {
|
|
115
|
+
this._pendingTimer = null;
|
|
116
|
+
this.ProcessTasks();
|
|
117
|
+
}, this._checkInterval); // setup the next check
|
|
118
|
+
}
|
|
79
119
|
}
|
|
80
120
|
}
|
|
81
121
|
}
|
|
82
122
|
AddTask(task) {
|
|
123
|
+
if (this._stopped) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
83
126
|
try {
|
|
84
127
|
// Add a task to the queue
|
|
85
128
|
this._queue.push(task);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueBase.js","sourceRoot":"","sources":["../../src/generic/QueueBase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"QueueBase.js","sourceRoot":"","sources":["../../src/generic/QueueBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TaskBase, QueueBase } from "./QueueBase.js";
|
|
2
2
|
import { UserInfo } from "@memberjunction/core";
|
|
3
3
|
import { MJQueueTypeEntity } from "@memberjunction/core-entities";
|
|
4
|
-
import { BaseSingleton } from "@memberjunction/global";
|
|
4
|
+
import { BaseSingleton, IShutdownable } from "@memberjunction/global";
|
|
5
5
|
/**
|
|
6
6
|
*QueueManager class is a generic manager of all active queues for the process.
|
|
7
7
|
*
|
|
@@ -15,9 +15,17 @@ import { BaseSingleton } from "@memberjunction/global";
|
|
|
15
15
|
*information. Heartbeat information is used to determine if a queue has crashed or not by other processes
|
|
16
16
|
*or not. After a heartbeat timeout is reached, other queues can pick up tasks from a crashed process.
|
|
17
17
|
*/
|
|
18
|
-
export declare class QueueManager extends BaseSingleton<QueueManager> {
|
|
18
|
+
export declare class QueueManager extends BaseSingleton<QueueManager> implements IShutdownable {
|
|
19
19
|
private _queueTypes;
|
|
20
20
|
private _queues;
|
|
21
|
+
get ShutdownName(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Stop every active queue. Idempotent. Wired to `ShutdownRegistry` so the
|
|
24
|
+
* SIGTERM/SIGINT handler can drain queues during graceful shutdown — without
|
|
25
|
+
* this, each `QueueBase` keeps `setTimeout`-pinning itself indefinitely.
|
|
26
|
+
*/
|
|
27
|
+
ShutdownAllQueues(): void;
|
|
28
|
+
Shutdown(): void;
|
|
21
29
|
static get QueueTypes(): MJQueueTypeEntity[];
|
|
22
30
|
static get Instance(): QueueManager;
|
|
23
31
|
private configPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.d.ts","sourceRoot":"","sources":["../../src/generic/QueueManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA+B,QAAQ,EAAc,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAoC,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAwB,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueManager.d.ts","sourceRoot":"","sources":["../../src/generic/QueueManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA+B,QAAQ,EAAc,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAoC,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAwB,aAAa,EAAoB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG9G;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAa,SAAQ,aAAa,CAAC,YAAY,CAAE,YAAW,aAAa;IACpF,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,OAAO,CAAmB;IAElC,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED;;;;OAIG;IACI,iBAAiB,IAAI,IAAI;IAUzB,QAAQ,IAAI,IAAI;IAIvB,WAAkB,UAAU,IAAI,iBAAiB,EAAE,CAElD;IAED,WAAkB,QAAQ,IAAI,YAAY,CAEzC;IAED,OAAO,CAAC,aAAa,CAA8B;IACtC,MAAM,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;WAcrC,MAAM,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;cAIhD,cAAc,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;;WAgBhD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAShH,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAqCxH,OAAO,CAAC,qBAAqB,CAAyC;cAEtD,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;cA0BrG,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAiDvH,SAAS,KAAK,MAAM,IAAI,SAAS,EAAE,CAElC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//import { MJQueueEntity, MJQueueTaskEntity, MJQueueTypeEntity } from "mj_generatedentities";
|
|
2
2
|
import { TaskBase, QueueBase } from "./QueueBase.js";
|
|
3
3
|
import { LogError, Metadata, RunView } from "@memberjunction/core";
|
|
4
|
-
import { MJGlobal, UUIDsEqual, BaseSingleton } from "@memberjunction/global";
|
|
4
|
+
import { MJGlobal, UUIDsEqual, BaseSingleton, ShutdownRegistry } from "@memberjunction/global";
|
|
5
5
|
import os from 'os';
|
|
6
6
|
/**
|
|
7
7
|
*QueueManager class is a generic manager of all active queues for the process.
|
|
@@ -17,6 +17,27 @@ import os from 'os';
|
|
|
17
17
|
*or not. After a heartbeat timeout is reached, other queues can pick up tasks from a crashed process.
|
|
18
18
|
*/
|
|
19
19
|
export class QueueManager extends BaseSingleton {
|
|
20
|
+
get ShutdownName() {
|
|
21
|
+
return 'QueueManager';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Stop every active queue. Idempotent. Wired to `ShutdownRegistry` so the
|
|
25
|
+
* SIGTERM/SIGINT handler can drain queues during graceful shutdown — without
|
|
26
|
+
* this, each `QueueBase` keeps `setTimeout`-pinning itself indefinitely.
|
|
27
|
+
*/
|
|
28
|
+
ShutdownAllQueues() {
|
|
29
|
+
for (const q of this._queues) {
|
|
30
|
+
try {
|
|
31
|
+
q.Stop();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Per-queue failures must not abort the rest of the shutdown.
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
Shutdown() {
|
|
39
|
+
this.ShutdownAllQueues();
|
|
40
|
+
}
|
|
20
41
|
static get QueueTypes() {
|
|
21
42
|
return QueueManager.Instance._queueTypes;
|
|
22
43
|
}
|
|
@@ -54,6 +75,9 @@ export class QueueManager extends BaseSingleton {
|
|
|
54
75
|
this.configPromise = null;
|
|
55
76
|
// Initialize a map to hold ongoing queue creation promises
|
|
56
77
|
this.ongoingQueueCreations = new Map();
|
|
78
|
+
// Self-register so SIGTERM/SIGINT handlers wired to ShutdownRegistry can
|
|
79
|
+
// drain queues without each entry-point app needing to know about us.
|
|
80
|
+
ShutdownRegistry.Instance.Register(this);
|
|
57
81
|
}
|
|
58
82
|
static async AddTask(QueueType, data, options, contextUser) {
|
|
59
83
|
await QueueManager.Config(contextUser);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../src/generic/QueueManager.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAwB,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueManager.js","sourceRoot":"","sources":["../../src/generic/QueueManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/queue",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.34.1",
|
|
5
5
|
"description": "MemberJunction: Queue Library for managing server side queues",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"typescript": "^5.9.3"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@memberjunction/ai": "5.
|
|
24
|
-
"@memberjunction/ai-provider-bundle": "5.
|
|
25
|
-
"@memberjunction/aiengine": "5.
|
|
26
|
-
"@memberjunction/core": "5.
|
|
27
|
-
"@memberjunction/global": "5.
|
|
28
|
-
"@memberjunction/core-entities": "5.
|
|
23
|
+
"@memberjunction/ai": "5.34.1",
|
|
24
|
+
"@memberjunction/ai-provider-bundle": "5.34.1",
|
|
25
|
+
"@memberjunction/aiengine": "5.34.1",
|
|
26
|
+
"@memberjunction/core": "5.34.1",
|
|
27
|
+
"@memberjunction/global": "5.34.1",
|
|
28
|
+
"@memberjunction/core-entities": "5.34.1",
|
|
29
29
|
"@types/uuid": "^11.0.0",
|
|
30
30
|
"uuid": "^13.0.0"
|
|
31
31
|
},
|