atomic-queues 1.1.1 → 1.2.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/decorators/decorators.d.ts +118 -0
- package/dist/decorators/decorators.d.ts.map +1 -1
- package/dist/decorators/decorators.js +162 -1
- package/dist/decorators/decorators.js.map +1 -1
- package/dist/module/atomic-queues.module.d.ts.map +1 -1
- package/dist/module/atomic-queues.module.js +2 -0
- package/dist/module/atomic-queues.module.js.map +1 -1
- package/dist/services/command-discovery/command-discovery.service.d.ts +88 -0
- package/dist/services/command-discovery/command-discovery.service.d.ts.map +1 -0
- package/dist/services/command-discovery/command-discovery.service.js +235 -0
- package/dist/services/command-discovery/command-discovery.service.js.map +1 -0
- package/dist/services/command-discovery/index.d.ts +2 -0
- package/dist/services/command-discovery/index.d.ts.map +1 -0
- package/dist/services/command-discovery/index.js +18 -0
- package/dist/services/command-discovery/index.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/processor-discovery/processor-discovery.service.d.ts +30 -1
- package/dist/services/processor-discovery/processor-discovery.service.d.ts.map +1 -1
- package/dist/services/processor-discovery/processor-discovery.service.js +78 -7
- package/dist/services/processor-discovery/processor-discovery.service.js.map +1 -1
- package/dist/services/queue-bus/index.d.ts +2 -0
- package/dist/services/queue-bus/index.d.ts.map +1 -0
- package/dist/services/queue-bus/index.js +18 -0
- package/dist/services/queue-bus/index.js.map +1 -0
- package/dist/services/queue-bus/queue-bus.service.d.ts +143 -0
- package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -0
- package/dist/services/queue-bus/queue-bus.service.js +214 -0
- package/dist/services/queue-bus/queue-bus.service.js.map +1 -0
- package/dist/services/queue-manager/queue-manager.service.d.ts +7 -1
- package/dist/services/queue-manager/queue-manager.service.d.ts.map +1 -1
- package/dist/services/queue-manager/queue-manager.service.js +26 -0
- package/dist/services/queue-manager/queue-manager.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { Job, JobsOptions } from 'bullmq';
|
|
3
|
+
import { QueueManagerService } from '../queue-manager/queue-manager.service';
|
|
4
|
+
/**
|
|
5
|
+
* Options for QueueBus.execute()
|
|
6
|
+
*/
|
|
7
|
+
export interface QueueBusExecuteOptions {
|
|
8
|
+
/**
|
|
9
|
+
* The entity ID to use for queue name resolution.
|
|
10
|
+
* If not provided, will try to extract from command properties:
|
|
11
|
+
* entityId, tableId, userId, id (in that order)
|
|
12
|
+
*/
|
|
13
|
+
entityId?: string;
|
|
14
|
+
/**
|
|
15
|
+
* BullMQ job options (priority, delay, attempts, etc.)
|
|
16
|
+
*/
|
|
17
|
+
jobOptions?: JobsOptions;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Registry entry for a command/query class
|
|
21
|
+
*/
|
|
22
|
+
export interface CommandRegistryEntry {
|
|
23
|
+
className: string;
|
|
24
|
+
targetClass: Type<any>;
|
|
25
|
+
isQuery: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* QueueBus
|
|
29
|
+
*
|
|
30
|
+
* A bus that works like CommandBus/QueryBus but instead of executing
|
|
31
|
+
* commands/queries directly, it adds them to a BullMQ queue for
|
|
32
|
+
* async processing by a worker.
|
|
33
|
+
*
|
|
34
|
+
* Key Features:
|
|
35
|
+
* - No decorators needed on commands/queries
|
|
36
|
+
* - Job name = class name (MakeBetCommand)
|
|
37
|
+
* - Worker looks up class by name and instantiates from job.data
|
|
38
|
+
* - Works with @nestjs/cqrs CommandBus/QueryBus on worker side
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Producer side - add command to queue
|
|
43
|
+
* await this.queueBus.execute(
|
|
44
|
+
* 'table-worker-{entityId}',
|
|
45
|
+
* new MakeBetCommand(tableId, sessionId, amount),
|
|
46
|
+
* );
|
|
47
|
+
*
|
|
48
|
+
* // Or with explicit entityId:
|
|
49
|
+
* await this.queueBus.execute(
|
|
50
|
+
* 'table-worker-{entityId}',
|
|
51
|
+
* new MakeBetCommand(tableId, sessionId, amount),
|
|
52
|
+
* { entityId: tableId }
|
|
53
|
+
* );
|
|
54
|
+
*
|
|
55
|
+
* // Worker side (automatic):
|
|
56
|
+
* // 1. Job arrives: { name: 'MakeBetCommand', data: { tableId, sessionId, amount } }
|
|
57
|
+
* // 2. Worker looks up MakeBetCommand class
|
|
58
|
+
* // 3. Instantiates with Object.assign(new MakeBetCommand(), data)
|
|
59
|
+
* // 4. Executes via CommandBus
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare class QueueBus {
|
|
63
|
+
private readonly queueManager;
|
|
64
|
+
private readonly logger;
|
|
65
|
+
/**
|
|
66
|
+
* Global registry of command/query classes
|
|
67
|
+
* Key: class name (e.g., 'MakeBetCommand')
|
|
68
|
+
* Value: registry entry with class reference
|
|
69
|
+
*/
|
|
70
|
+
private static readonly globalRegistry;
|
|
71
|
+
constructor(queueManager: QueueManagerService);
|
|
72
|
+
/**
|
|
73
|
+
* Register a command class for worker-side instantiation
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* QueueBus.register(MakeBetCommand);
|
|
77
|
+
* QueueBus.register(GetTableStateQuery, true); // isQuery = true
|
|
78
|
+
*/
|
|
79
|
+
static register(targetClass: Type<any>, isQuery?: boolean): void;
|
|
80
|
+
/**
|
|
81
|
+
* Register multiple commands at once
|
|
82
|
+
*/
|
|
83
|
+
static registerCommands(...commands: Type<any>[]): void;
|
|
84
|
+
/**
|
|
85
|
+
* Register multiple queries at once
|
|
86
|
+
*/
|
|
87
|
+
static registerQueries(...queries: Type<any>[]): void;
|
|
88
|
+
/**
|
|
89
|
+
* Get a registered class by name
|
|
90
|
+
*/
|
|
91
|
+
static getRegistered(className: string): CommandRegistryEntry | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Check if a class name is registered
|
|
94
|
+
*/
|
|
95
|
+
static isRegistered(className: string): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Get all registered entries
|
|
98
|
+
*/
|
|
99
|
+
static getAllRegistered(): Map<string, CommandRegistryEntry>;
|
|
100
|
+
/**
|
|
101
|
+
* Execute a command/query by adding it to a queue
|
|
102
|
+
*
|
|
103
|
+
* @param queuePattern - Queue name pattern with {entityId} placeholder
|
|
104
|
+
* @param commandOrQuery - The command/query instance to execute
|
|
105
|
+
* @param options - Optional settings (entityId, jobOptions)
|
|
106
|
+
* @returns The created BullMQ job
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* // Pattern with placeholder
|
|
110
|
+
* await queueBus.execute(
|
|
111
|
+
* 'table-worker-{entityId}',
|
|
112
|
+
* new MakeBetCommand(tableId, sessionId, amount),
|
|
113
|
+
* );
|
|
114
|
+
*
|
|
115
|
+
* // Static queue name (no placeholder)
|
|
116
|
+
* await queueBus.execute(
|
|
117
|
+
* 'payment-queue',
|
|
118
|
+
* new ProcessPaymentCommand(paymentId, amount),
|
|
119
|
+
* );
|
|
120
|
+
*/
|
|
121
|
+
execute<T extends object>(queuePattern: string, commandOrQuery: T, options?: QueueBusExecuteOptions): Promise<Job>;
|
|
122
|
+
/**
|
|
123
|
+
* Execute and wait for result (if supported by worker)
|
|
124
|
+
* Uses BullMQ's waitUntilFinished
|
|
125
|
+
*/
|
|
126
|
+
executeAndWait<T extends object, R = any>(queuePattern: string, commandOrQuery: T, options?: QueueBusExecuteOptions & {
|
|
127
|
+
timeout?: number;
|
|
128
|
+
}): Promise<R>;
|
|
129
|
+
/**
|
|
130
|
+
* Add multiple commands/queries to the same queue in bulk
|
|
131
|
+
*/
|
|
132
|
+
executeBulk<T extends object>(queuePattern: string, commandsOrQueries: T[], options?: QueueBusExecuteOptions): Promise<Job[]>;
|
|
133
|
+
/**
|
|
134
|
+
* Resolve queue name by replacing {entityId} placeholder
|
|
135
|
+
*/
|
|
136
|
+
private resolveQueueName;
|
|
137
|
+
/**
|
|
138
|
+
* Extract entityId from command data
|
|
139
|
+
* Tries common property names in order
|
|
140
|
+
*/
|
|
141
|
+
private extractEntityId;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=queue-bus.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-bus.service.d.ts","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAS,GAAG,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAwB7E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,QAAQ;IAWjB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA2C;gBAG9D,YAAY,EAAE,mBAAmB;IAGpD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,UAAQ,GAAG,IAAI;IAS9D;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAMvD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI;IAMrD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIzE;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI/C;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAI5D;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,OAAO,CAAC,CAAC,SAAS,MAAM,EAC5B,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,CAAC,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,GAAG,CAAC;IAmBf;;;OAGG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EAC5C,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,CAAC,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC,CAAC,CAAC;IAab;;OAEG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,EAChC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,CAAC,EAAE,EACtB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;IAkBjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAgBxB"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var QueueBus_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.QueueBus = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const queue_manager_service_1 = require("../queue-manager/queue-manager.service");
|
|
16
|
+
/**
|
|
17
|
+
* Derive job name from class name
|
|
18
|
+
* MakeBetCommand -> MakeBetCommand (keep as-is for lookup)
|
|
19
|
+
*/
|
|
20
|
+
function getJobName(commandOrQuery) {
|
|
21
|
+
return commandOrQuery.constructor.name;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extract all properties from a command/query instance
|
|
25
|
+
*/
|
|
26
|
+
function extractData(commandOrQuery) {
|
|
27
|
+
const data = {};
|
|
28
|
+
// Get all enumerable properties
|
|
29
|
+
for (const key of Object.keys(commandOrQuery)) {
|
|
30
|
+
data[key] = commandOrQuery[key];
|
|
31
|
+
}
|
|
32
|
+
return data;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* QueueBus
|
|
36
|
+
*
|
|
37
|
+
* A bus that works like CommandBus/QueryBus but instead of executing
|
|
38
|
+
* commands/queries directly, it adds them to a BullMQ queue for
|
|
39
|
+
* async processing by a worker.
|
|
40
|
+
*
|
|
41
|
+
* Key Features:
|
|
42
|
+
* - No decorators needed on commands/queries
|
|
43
|
+
* - Job name = class name (MakeBetCommand)
|
|
44
|
+
* - Worker looks up class by name and instantiates from job.data
|
|
45
|
+
* - Works with @nestjs/cqrs CommandBus/QueryBus on worker side
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* // Producer side - add command to queue
|
|
50
|
+
* await this.queueBus.execute(
|
|
51
|
+
* 'table-worker-{entityId}',
|
|
52
|
+
* new MakeBetCommand(tableId, sessionId, amount),
|
|
53
|
+
* );
|
|
54
|
+
*
|
|
55
|
+
* // Or with explicit entityId:
|
|
56
|
+
* await this.queueBus.execute(
|
|
57
|
+
* 'table-worker-{entityId}',
|
|
58
|
+
* new MakeBetCommand(tableId, sessionId, amount),
|
|
59
|
+
* { entityId: tableId }
|
|
60
|
+
* );
|
|
61
|
+
*
|
|
62
|
+
* // Worker side (automatic):
|
|
63
|
+
* // 1. Job arrives: { name: 'MakeBetCommand', data: { tableId, sessionId, amount } }
|
|
64
|
+
* // 2. Worker looks up MakeBetCommand class
|
|
65
|
+
* // 3. Instantiates with Object.assign(new MakeBetCommand(), data)
|
|
66
|
+
* // 4. Executes via CommandBus
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
let QueueBus = QueueBus_1 = class QueueBus {
|
|
70
|
+
constructor(queueManager) {
|
|
71
|
+
this.queueManager = queueManager;
|
|
72
|
+
this.logger = new common_1.Logger(QueueBus_1.name);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Register a command class for worker-side instantiation
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* QueueBus.register(MakeBetCommand);
|
|
79
|
+
* QueueBus.register(GetTableStateQuery, true); // isQuery = true
|
|
80
|
+
*/
|
|
81
|
+
static register(targetClass, isQuery = false) {
|
|
82
|
+
const entry = {
|
|
83
|
+
className: targetClass.name,
|
|
84
|
+
targetClass,
|
|
85
|
+
isQuery,
|
|
86
|
+
};
|
|
87
|
+
QueueBus_1.globalRegistry.set(targetClass.name, entry);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Register multiple commands at once
|
|
91
|
+
*/
|
|
92
|
+
static registerCommands(...commands) {
|
|
93
|
+
for (const cmd of commands) {
|
|
94
|
+
QueueBus_1.register(cmd, false);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Register multiple queries at once
|
|
99
|
+
*/
|
|
100
|
+
static registerQueries(...queries) {
|
|
101
|
+
for (const query of queries) {
|
|
102
|
+
QueueBus_1.register(query, true);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get a registered class by name
|
|
107
|
+
*/
|
|
108
|
+
static getRegistered(className) {
|
|
109
|
+
return QueueBus_1.globalRegistry.get(className);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if a class name is registered
|
|
113
|
+
*/
|
|
114
|
+
static isRegistered(className) {
|
|
115
|
+
return QueueBus_1.globalRegistry.has(className);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get all registered entries
|
|
119
|
+
*/
|
|
120
|
+
static getAllRegistered() {
|
|
121
|
+
return new Map(QueueBus_1.globalRegistry);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Execute a command/query by adding it to a queue
|
|
125
|
+
*
|
|
126
|
+
* @param queuePattern - Queue name pattern with {entityId} placeholder
|
|
127
|
+
* @param commandOrQuery - The command/query instance to execute
|
|
128
|
+
* @param options - Optional settings (entityId, jobOptions)
|
|
129
|
+
* @returns The created BullMQ job
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* // Pattern with placeholder
|
|
133
|
+
* await queueBus.execute(
|
|
134
|
+
* 'table-worker-{entityId}',
|
|
135
|
+
* new MakeBetCommand(tableId, sessionId, amount),
|
|
136
|
+
* );
|
|
137
|
+
*
|
|
138
|
+
* // Static queue name (no placeholder)
|
|
139
|
+
* await queueBus.execute(
|
|
140
|
+
* 'payment-queue',
|
|
141
|
+
* new ProcessPaymentCommand(paymentId, amount),
|
|
142
|
+
* );
|
|
143
|
+
*/
|
|
144
|
+
async execute(queuePattern, commandOrQuery, options) {
|
|
145
|
+
const jobName = getJobName(commandOrQuery);
|
|
146
|
+
const data = extractData(commandOrQuery);
|
|
147
|
+
const entityId = options?.entityId ?? this.extractEntityId(data);
|
|
148
|
+
// Resolve queue name with entityId
|
|
149
|
+
const queueName = this.resolveQueueName(queuePattern, entityId);
|
|
150
|
+
// Get or create the queue
|
|
151
|
+
const queue = this.queueManager.getOrCreateQueue(queueName);
|
|
152
|
+
this.logger.debug(`Adding job ${jobName} to queue ${queueName} with entityId=${entityId}`);
|
|
153
|
+
// Add job to queue
|
|
154
|
+
return queue.add(jobName, data, options?.jobOptions);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Execute and wait for result (if supported by worker)
|
|
158
|
+
* Uses BullMQ's waitUntilFinished
|
|
159
|
+
*/
|
|
160
|
+
async executeAndWait(queuePattern, commandOrQuery, options) {
|
|
161
|
+
const job = await this.execute(queuePattern, commandOrQuery, options);
|
|
162
|
+
const queueEvents = await this.queueManager.getQueueEvents(this.resolveQueueName(queuePattern, options?.entityId ?? this.extractEntityId(extractData(commandOrQuery))));
|
|
163
|
+
return job.waitUntilFinished(queueEvents, options?.timeout);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Add multiple commands/queries to the same queue in bulk
|
|
167
|
+
*/
|
|
168
|
+
async executeBulk(queuePattern, commandsOrQueries, options) {
|
|
169
|
+
if (commandsOrQueries.length === 0)
|
|
170
|
+
return [];
|
|
171
|
+
const entityId = options?.entityId ?? this.extractEntityId(extractData(commandsOrQueries[0]));
|
|
172
|
+
const queueName = this.resolveQueueName(queuePattern, entityId);
|
|
173
|
+
const queue = this.queueManager.getOrCreateQueue(queueName);
|
|
174
|
+
const bulkJobs = commandsOrQueries.map((cmd) => ({
|
|
175
|
+
name: getJobName(cmd),
|
|
176
|
+
data: extractData(cmd),
|
|
177
|
+
opts: options?.jobOptions,
|
|
178
|
+
}));
|
|
179
|
+
return queue.addBulk(bulkJobs);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Resolve queue name by replacing {entityId} placeholder
|
|
183
|
+
*/
|
|
184
|
+
resolveQueueName(pattern, entityId) {
|
|
185
|
+
return pattern.replace('{entityId}', entityId);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Extract entityId from command data
|
|
189
|
+
* Tries common property names in order
|
|
190
|
+
*/
|
|
191
|
+
extractEntityId(data) {
|
|
192
|
+
const candidates = ['entityId', 'tableId', 'userId', 'id', 'gameId', 'playerId'];
|
|
193
|
+
for (const key of candidates) {
|
|
194
|
+
if (data[key] !== undefined && data[key] !== null) {
|
|
195
|
+
return String(data[key]);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Log warning if no entityId found
|
|
199
|
+
this.logger.warn(`Could not extract entityId from command data. Keys: ${Object.keys(data).join(', ')}`);
|
|
200
|
+
return 'default';
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
exports.QueueBus = QueueBus;
|
|
204
|
+
/**
|
|
205
|
+
* Global registry of command/query classes
|
|
206
|
+
* Key: class name (e.g., 'MakeBetCommand')
|
|
207
|
+
* Value: registry entry with class reference
|
|
208
|
+
*/
|
|
209
|
+
QueueBus.globalRegistry = new Map();
|
|
210
|
+
exports.QueueBus = QueueBus = QueueBus_1 = __decorate([
|
|
211
|
+
(0, common_1.Injectable)(),
|
|
212
|
+
__metadata("design:paramtypes", [queue_manager_service_1.QueueManagerService])
|
|
213
|
+
], QueueBus);
|
|
214
|
+
//# sourceMappingURL=queue-bus.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-bus.service.js","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import { Queue, Job } from 'bullmq';
|
|
2
|
+
import { Queue, Job, QueueEvents } from 'bullmq';
|
|
3
3
|
import Redis from 'ioredis';
|
|
4
4
|
import { IQueueManager, IManagedQueue, IJobOptions } from '../../domain';
|
|
5
5
|
import { IAtomicQueuesModuleConfig } from '../../domain';
|
|
@@ -31,6 +31,7 @@ export declare class QueueManagerService implements IQueueManager, OnModuleDestr
|
|
|
31
31
|
private readonly config;
|
|
32
32
|
private readonly logger;
|
|
33
33
|
private readonly queues;
|
|
34
|
+
private readonly queueEvents;
|
|
34
35
|
private readonly keyPrefix;
|
|
35
36
|
constructor(redis: Redis, config: IAtomicQueuesModuleConfig);
|
|
36
37
|
/**
|
|
@@ -104,6 +105,11 @@ export declare class QueueManagerService implements IQueueManager, OnModuleDestr
|
|
|
104
105
|
* Get managed queue info.
|
|
105
106
|
*/
|
|
106
107
|
getManagedQueue(queueName: string): IManagedQueue | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Get or create QueueEvents for a queue.
|
|
110
|
+
* Used for waitUntilFinished functionality.
|
|
111
|
+
*/
|
|
112
|
+
getQueueEvents(queueName: string): Promise<QueueEvents>;
|
|
107
113
|
/**
|
|
108
114
|
* Create a new BullMQ Queue instance with configuration.
|
|
109
115
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.service.d.ts","sourceRoot":"","sources":["../../../src/services/queue-manager/queue-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"queue-manager.service.d.ts","sourceRoot":"","sources":["../../../src/services/queue-manager/queue-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EAEZ,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,mBAAoB,YAAW,aAAa,EAAE,eAAe;IAOzC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGa,KAAK,EAAE,KAAK,EACX,MAAM,EAAE,yBAAyB;IAKlF;;;OAGG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK;IAuB1C;;;OAGG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK;IAuBnE;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlD;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBrC;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE;IAMxD;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBhE;;OAEG;IACG,MAAM,CAAC,CAAC,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAgBlB;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvD;;OAEG;IACG,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC,EAAE,EACrE,KAAK,SAAI,EACT,GAAG,SAAM,GACR,OAAO,CAAC,GAAG,EAAE,CAAC;IAKjB;;OAEG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAiBF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI7D;;;OAGG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmB7D;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAavC"}
|
|
@@ -51,6 +51,7 @@ let QueueManagerService = QueueManagerService_1 = class QueueManagerService {
|
|
|
51
51
|
this.config = config;
|
|
52
52
|
this.logger = new common_1.Logger(QueueManagerService_1.name);
|
|
53
53
|
this.queues = new Map();
|
|
54
|
+
this.queueEvents = new Map();
|
|
54
55
|
this.keyPrefix = config.keyPrefix || 'aq';
|
|
55
56
|
}
|
|
56
57
|
/**
|
|
@@ -242,6 +243,21 @@ let QueueManagerService = QueueManagerService_1 = class QueueManagerService {
|
|
|
242
243
|
getManagedQueue(queueName) {
|
|
243
244
|
return this.queues.get(this.normalizeQueueName(queueName));
|
|
244
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Get or create QueueEvents for a queue.
|
|
248
|
+
* Used for waitUntilFinished functionality.
|
|
249
|
+
*/
|
|
250
|
+
async getQueueEvents(queueName) {
|
|
251
|
+
const normalizedName = this.normalizeQueueName(queueName);
|
|
252
|
+
if (this.queueEvents.has(normalizedName)) {
|
|
253
|
+
return this.queueEvents.get(normalizedName);
|
|
254
|
+
}
|
|
255
|
+
const events = new bullmq_1.QueueEvents(normalizedName, {
|
|
256
|
+
connection: this.redis.duplicate(),
|
|
257
|
+
});
|
|
258
|
+
this.queueEvents.set(normalizedName, events);
|
|
259
|
+
return events;
|
|
260
|
+
}
|
|
245
261
|
// =========================================================================
|
|
246
262
|
// PRIVATE METHODS
|
|
247
263
|
// =========================================================================
|
|
@@ -295,6 +311,16 @@ let QueueManagerService = QueueManagerService_1 = class QueueManagerService {
|
|
|
295
311
|
* Cleanup on module destroy.
|
|
296
312
|
*/
|
|
297
313
|
async onModuleDestroy() {
|
|
314
|
+
// Close all QueueEvents
|
|
315
|
+
for (const [name, events] of this.queueEvents) {
|
|
316
|
+
try {
|
|
317
|
+
await events.close();
|
|
318
|
+
}
|
|
319
|
+
catch (error) {
|
|
320
|
+
this.logger.error(`Error closing QueueEvents ${name}:`, error);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
this.queueEvents.clear();
|
|
298
324
|
await this.closeAllQueues();
|
|
299
325
|
}
|
|
300
326
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.service.js","sourceRoot":"","sources":["../../../src/services/queue-manager/queue-manager.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"queue-manager.service.js","sourceRoot":"","sources":["../../../src/services/queue-manager/queue-manager.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "atomic-queues",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "A plug-and-play NestJS library for atomic process handling per entity with BullMQ, Redis distributed locking, and dynamic worker management",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|