atomic-queues 1.4.1 → 1.6.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.
Files changed (229) hide show
  1. package/README.md +300 -283
  2. package/dist/decorators/constants.d.ts +17 -0
  3. package/dist/decorators/constants.d.ts.map +1 -0
  4. package/dist/decorators/constants.js +23 -0
  5. package/dist/decorators/constants.js.map +1 -0
  6. package/dist/decorators/entity.decorators.d.ts +88 -0
  7. package/dist/decorators/entity.decorators.d.ts.map +1 -0
  8. package/dist/decorators/entity.decorators.js +150 -0
  9. package/dist/decorators/entity.decorators.js.map +1 -0
  10. package/dist/decorators/index.d.ts +9 -1
  11. package/dist/decorators/index.d.ts.map +1 -1
  12. package/dist/decorators/index.js +9 -1
  13. package/dist/decorators/index.js.map +1 -1
  14. package/dist/decorators/interfaces.d.ts +130 -0
  15. package/dist/decorators/interfaces.d.ts.map +1 -0
  16. package/dist/decorators/interfaces.js +3 -0
  17. package/dist/decorators/interfaces.js.map +1 -0
  18. package/dist/decorators/job.decorators.d.ts +60 -0
  19. package/dist/decorators/job.decorators.d.ts.map +1 -0
  20. package/dist/decorators/job.decorators.js +97 -0
  21. package/dist/decorators/job.decorators.js.map +1 -0
  22. package/dist/decorators/legacy.decorators.d.ts +36 -0
  23. package/dist/decorators/legacy.decorators.d.ts.map +1 -0
  24. package/dist/decorators/legacy.decorators.js +61 -0
  25. package/dist/decorators/legacy.decorators.js.map +1 -0
  26. package/dist/decorators/metadata-readers.d.ts +31 -0
  27. package/dist/decorators/metadata-readers.d.ts.map +1 -0
  28. package/dist/decorators/metadata-readers.js +53 -0
  29. package/dist/decorators/metadata-readers.js.map +1 -0
  30. package/dist/decorators/registry.d.ts +2 -0
  31. package/dist/decorators/registry.d.ts.map +1 -0
  32. package/dist/decorators/registry.js +6 -0
  33. package/dist/decorators/registry.js.map +1 -0
  34. package/dist/decorators/scaler.decorators.d.ts +65 -0
  35. package/dist/decorators/scaler.decorators.d.ts.map +1 -0
  36. package/dist/decorators/scaler.decorators.js +103 -0
  37. package/dist/decorators/scaler.decorators.js.map +1 -0
  38. package/dist/decorators/type-guards.d.ts +18 -0
  39. package/dist/decorators/type-guards.d.ts.map +1 -0
  40. package/dist/decorators/type-guards.js +32 -0
  41. package/dist/decorators/type-guards.js.map +1 -0
  42. package/dist/decorators/utils.d.ts +20 -0
  43. package/dist/decorators/utils.d.ts.map +1 -0
  44. package/dist/decorators/utils.js +98 -0
  45. package/dist/decorators/utils.js.map +1 -0
  46. package/dist/decorators/worker.decorators.d.ts +58 -0
  47. package/dist/decorators/worker.decorators.d.ts.map +1 -0
  48. package/dist/decorators/worker.decorators.js +92 -0
  49. package/dist/decorators/worker.decorators.js.map +1 -0
  50. package/dist/domain/interfaces/config.interfaces.d.ts +188 -0
  51. package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -0
  52. package/dist/domain/interfaces/config.interfaces.js +3 -0
  53. package/dist/domain/interfaces/config.interfaces.js.map +1 -0
  54. package/dist/domain/interfaces/cqrs.interfaces.d.ts +7 -0
  55. package/dist/domain/interfaces/cqrs.interfaces.d.ts.map +1 -0
  56. package/dist/domain/interfaces/cqrs.interfaces.js +3 -0
  57. package/dist/domain/interfaces/cqrs.interfaces.js.map +1 -0
  58. package/dist/domain/interfaces/event.interfaces.d.ts +71 -0
  59. package/dist/domain/interfaces/event.interfaces.d.ts.map +1 -0
  60. package/dist/domain/interfaces/event.interfaces.js +3 -0
  61. package/dist/domain/interfaces/event.interfaces.js.map +1 -0
  62. package/dist/domain/interfaces/index-tracking.interfaces.d.ts +69 -0
  63. package/dist/domain/interfaces/index-tracking.interfaces.d.ts.map +1 -0
  64. package/dist/domain/interfaces/index-tracking.interfaces.js +3 -0
  65. package/dist/domain/interfaces/index-tracking.interfaces.js.map +1 -0
  66. package/dist/domain/interfaces/index.d.ts +12 -0
  67. package/dist/domain/interfaces/index.d.ts.map +1 -0
  68. package/dist/domain/interfaces/index.js +28 -0
  69. package/dist/domain/interfaces/index.js.map +1 -0
  70. package/dist/domain/interfaces/job.interfaces.d.ts +76 -0
  71. package/dist/domain/interfaces/job.interfaces.d.ts.map +1 -0
  72. package/dist/domain/interfaces/job.interfaces.js +3 -0
  73. package/dist/domain/interfaces/job.interfaces.js.map +1 -0
  74. package/dist/domain/interfaces/lock.interfaces.d.ts +54 -0
  75. package/dist/domain/interfaces/lock.interfaces.d.ts.map +1 -0
  76. package/dist/domain/interfaces/lock.interfaces.js +3 -0
  77. package/dist/domain/interfaces/lock.interfaces.js.map +1 -0
  78. package/dist/domain/interfaces/process.interfaces.d.ts +44 -0
  79. package/dist/domain/interfaces/process.interfaces.d.ts.map +1 -0
  80. package/dist/domain/interfaces/process.interfaces.js +3 -0
  81. package/dist/domain/interfaces/process.interfaces.js.map +1 -0
  82. package/dist/domain/interfaces/queue.interfaces.d.ts +46 -0
  83. package/dist/domain/interfaces/queue.interfaces.d.ts.map +1 -0
  84. package/dist/domain/interfaces/queue.interfaces.js +3 -0
  85. package/dist/domain/interfaces/queue.interfaces.js.map +1 -0
  86. package/dist/domain/interfaces/scaling.interfaces.d.ts +62 -0
  87. package/dist/domain/interfaces/scaling.interfaces.d.ts.map +1 -0
  88. package/dist/domain/interfaces/scaling.interfaces.js +3 -0
  89. package/dist/domain/interfaces/scaling.interfaces.js.map +1 -0
  90. package/dist/domain/interfaces/utility.types.d.ts +15 -0
  91. package/dist/domain/interfaces/utility.types.d.ts.map +1 -0
  92. package/dist/domain/interfaces/utility.types.js +3 -0
  93. package/dist/domain/interfaces/utility.types.js.map +1 -0
  94. package/dist/domain/interfaces/worker.interfaces.d.ts +120 -0
  95. package/dist/domain/interfaces/worker.interfaces.d.ts.map +1 -0
  96. package/dist/domain/interfaces/worker.interfaces.js +3 -0
  97. package/dist/domain/interfaces/worker.interfaces.js.map +1 -0
  98. package/dist/module/atomic-queues.module.d.ts.map +1 -1
  99. package/dist/module/atomic-queues.module.js +5 -0
  100. package/dist/module/atomic-queues.module.js.map +1 -1
  101. package/dist/services/cron-manager/cron-manager.service.d.ts +5 -4
  102. package/dist/services/cron-manager/cron-manager.service.d.ts.map +1 -1
  103. package/dist/services/cron-manager/cron-manager.service.js +26 -57
  104. package/dist/services/cron-manager/cron-manager.service.js.map +1 -1
  105. package/dist/services/index-manager/index-manager.service.d.ts +0 -4
  106. package/dist/services/index-manager/index-manager.service.d.ts.map +1 -1
  107. package/dist/services/index-manager/index-manager.service.js +4 -16
  108. package/dist/services/index-manager/index-manager.service.js.map +1 -1
  109. package/dist/services/index.d.ts +1 -0
  110. package/dist/services/index.d.ts.map +1 -1
  111. package/dist/services/index.js +1 -0
  112. package/dist/services/index.js.map +1 -1
  113. package/dist/services/processor-discovery/decorator-discovery.service.d.ts +40 -0
  114. package/dist/services/processor-discovery/decorator-discovery.service.d.ts.map +1 -0
  115. package/dist/services/processor-discovery/decorator-discovery.service.js +191 -0
  116. package/dist/services/processor-discovery/decorator-discovery.service.js.map +1 -0
  117. package/dist/services/processor-discovery/index.d.ts +4 -0
  118. package/dist/services/processor-discovery/index.d.ts.map +1 -1
  119. package/dist/services/processor-discovery/index.js +4 -0
  120. package/dist/services/processor-discovery/index.js.map +1 -1
  121. package/dist/services/processor-discovery/processor-discovery.service.d.ts +30 -138
  122. package/dist/services/processor-discovery/processor-discovery.service.d.ts.map +1 -1
  123. package/dist/services/processor-discovery/processor-discovery.service.js +125 -502
  124. package/dist/services/processor-discovery/processor-discovery.service.js.map +1 -1
  125. package/dist/services/processor-discovery/processor-registry.d.ts +58 -0
  126. package/dist/services/processor-discovery/processor-registry.d.ts.map +1 -0
  127. package/dist/services/processor-discovery/processor-registry.js +74 -0
  128. package/dist/services/processor-discovery/processor-registry.js.map +1 -0
  129. package/dist/services/processor-discovery/scaling-registration.service.d.ts +60 -0
  130. package/dist/services/processor-discovery/scaling-registration.service.d.ts.map +1 -0
  131. package/dist/services/processor-discovery/scaling-registration.service.js +261 -0
  132. package/dist/services/processor-discovery/scaling-registration.service.js.map +1 -0
  133. package/dist/services/processor-discovery/worker-factory.service.d.ts +54 -0
  134. package/dist/services/processor-discovery/worker-factory.service.d.ts.map +1 -0
  135. package/dist/services/processor-discovery/worker-factory.service.js +185 -0
  136. package/dist/services/processor-discovery/worker-factory.service.js.map +1 -0
  137. package/dist/services/queue-bus/entity-target.d.ts +58 -0
  138. package/dist/services/queue-bus/entity-target.d.ts.map +1 -0
  139. package/dist/services/queue-bus/entity-target.js +109 -0
  140. package/dist/services/queue-bus/entity-target.js.map +1 -0
  141. package/dist/services/queue-bus/index.d.ts +4 -0
  142. package/dist/services/queue-bus/index.d.ts.map +1 -1
  143. package/dist/services/queue-bus/index.js +4 -0
  144. package/dist/services/queue-bus/index.js.map +1 -1
  145. package/dist/services/queue-bus/queue-bus.service.d.ts +9 -145
  146. package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
  147. package/dist/services/queue-bus/queue-bus.service.js +23 -311
  148. package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
  149. package/dist/services/queue-bus/queue-bus.types.d.ts +40 -0
  150. package/dist/services/queue-bus/queue-bus.types.d.ts.map +1 -0
  151. package/dist/services/queue-bus/queue-bus.types.js +3 -0
  152. package/dist/services/queue-bus/queue-bus.types.js.map +1 -0
  153. package/dist/services/queue-bus/queue-bus.utils.d.ts +34 -0
  154. package/dist/services/queue-bus/queue-bus.utils.d.ts.map +1 -0
  155. package/dist/services/queue-bus/queue-bus.utils.js +82 -0
  156. package/dist/services/queue-bus/queue-bus.utils.js.map +1 -0
  157. package/dist/services/queue-bus/queue-target.d.ts +61 -0
  158. package/dist/services/queue-bus/queue-target.d.ts.map +1 -0
  159. package/dist/services/queue-bus/queue-target.js +123 -0
  160. package/dist/services/queue-bus/queue-target.js.map +1 -0
  161. package/dist/services/queue-events-manager/queue-events-manager.service.d.ts +23 -6
  162. package/dist/services/queue-events-manager/queue-events-manager.service.d.ts.map +1 -1
  163. package/dist/services/queue-events-manager/queue-events-manager.service.js +69 -37
  164. package/dist/services/queue-events-manager/queue-events-manager.service.js.map +1 -1
  165. package/dist/services/resource-lock/resource-lock.service.d.ts +0 -4
  166. package/dist/services/resource-lock/resource-lock.service.d.ts.map +1 -1
  167. package/dist/services/resource-lock/resource-lock.service.js +4 -16
  168. package/dist/services/resource-lock/resource-lock.service.js.map +1 -1
  169. package/dist/services/service-queue/index.d.ts +1 -0
  170. package/dist/services/service-queue/index.d.ts.map +1 -1
  171. package/dist/services/service-queue/index.js +1 -0
  172. package/dist/services/service-queue/index.js.map +1 -1
  173. package/dist/services/service-queue/service-queue.service.d.ts +2 -35
  174. package/dist/services/service-queue/service-queue.service.d.ts.map +1 -1
  175. package/dist/services/service-queue/service-queue.service.js +17 -49
  176. package/dist/services/service-queue/service-queue.service.js.map +1 -1
  177. package/dist/services/service-queue/service-queue.types.d.ts +32 -0
  178. package/dist/services/service-queue/service-queue.types.d.ts.map +1 -0
  179. package/dist/services/service-queue/service-queue.types.js +27 -0
  180. package/dist/services/service-queue/service-queue.types.js.map +1 -0
  181. package/dist/services/spawn-queue/index.d.ts +2 -0
  182. package/dist/services/spawn-queue/index.d.ts.map +1 -0
  183. package/dist/services/spawn-queue/index.js +18 -0
  184. package/dist/services/spawn-queue/index.js.map +1 -0
  185. package/dist/services/spawn-queue/spawn-queue.service.d.ts +119 -0
  186. package/dist/services/spawn-queue/spawn-queue.service.d.ts.map +1 -0
  187. package/dist/services/spawn-queue/spawn-queue.service.js +273 -0
  188. package/dist/services/spawn-queue/spawn-queue.service.js.map +1 -0
  189. package/dist/services/worker-manager/worker-manager.service.d.ts +18 -3
  190. package/dist/services/worker-manager/worker-manager.service.d.ts.map +1 -1
  191. package/dist/services/worker-manager/worker-manager.service.js +46 -21
  192. package/dist/services/worker-manager/worker-manager.service.js.map +1 -1
  193. package/dist/utils/async.utils.d.ts +51 -0
  194. package/dist/utils/async.utils.d.ts.map +1 -0
  195. package/dist/utils/async.utils.js +87 -0
  196. package/dist/utils/async.utils.js.map +1 -0
  197. package/dist/utils/helpers.d.ts +4 -123
  198. package/dist/utils/helpers.d.ts.map +1 -1
  199. package/dist/utils/helpers.js +18 -226
  200. package/dist/utils/helpers.js.map +1 -1
  201. package/dist/utils/index.d.ts +1 -0
  202. package/dist/utils/index.d.ts.map +1 -1
  203. package/dist/utils/index.js +1 -0
  204. package/dist/utils/index.js.map +1 -1
  205. package/dist/utils/job.utils.d.ts +50 -0
  206. package/dist/utils/job.utils.d.ts.map +1 -0
  207. package/dist/utils/job.utils.js +89 -0
  208. package/dist/utils/job.utils.js.map +1 -0
  209. package/dist/utils/naming.utils.d.ts +21 -0
  210. package/dist/utils/naming.utils.d.ts.map +1 -0
  211. package/dist/utils/naming.utils.js +38 -0
  212. package/dist/utils/naming.utils.js.map +1 -0
  213. package/dist/utils/rate-limit.utils.d.ts +9 -0
  214. package/dist/utils/rate-limit.utils.d.ts.map +1 -0
  215. package/dist/utils/rate-limit.utils.js +30 -0
  216. package/dist/utils/rate-limit.utils.js.map +1 -0
  217. package/dist/utils/redis.utils.d.ts +3 -0
  218. package/dist/utils/redis.utils.d.ts.map +1 -0
  219. package/dist/utils/redis.utils.js +14 -0
  220. package/dist/utils/redis.utils.js.map +1 -0
  221. package/package.json +17 -17
  222. package/dist/decorators/decorators.d.ts +0 -489
  223. package/dist/decorators/decorators.d.ts.map +0 -1
  224. package/dist/decorators/decorators.js +0 -680
  225. package/dist/decorators/decorators.js.map +0 -1
  226. package/dist/domain/interfaces.d.ts +0 -748
  227. package/dist/domain/interfaces.d.ts.map +0 -1
  228. package/dist/domain/interfaces.js +0 -19
  229. package/dist/domain/interfaces.js.map +0 -1
@@ -0,0 +1,61 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { Job } from 'bullmq';
3
+ import { QueueManagerService } from '../queue-manager/queue-manager.service';
4
+ import { QueueEventsManagerService } from '../queue-events-manager/queue-events-manager.service';
5
+ import { WorkerProcessorOptions } from '../../decorators';
6
+ import { IEntityConfig } from '../../domain/interfaces';
7
+ import { EnqueueOptions } from './queue-bus.types';
8
+ /**
9
+ * QueueTarget - Fluent builder for targeting a specific processor's queue
10
+ *
11
+ * @example
12
+ * await queueBus
13
+ * .forProcessor(TableWorkerProcessor)
14
+ * .enqueue(new MakeBetCommand(tableId, bets, player));
15
+ */
16
+ export declare class QueueTarget {
17
+ private readonly queueManager;
18
+ private readonly processorClass;
19
+ private readonly processorOptions;
20
+ private readonly entityConfig?;
21
+ private readonly queueEventsManager?;
22
+ private readonly logger;
23
+ constructor(queueManager: QueueManagerService, processorClass: Type<any>, processorOptions: WorkerProcessorOptions, entityConfig?: IEntityConfig | undefined, queueEventsManager?: QueueEventsManagerService | undefined);
24
+ /**
25
+ * Get the queue name function from the processor
26
+ */
27
+ private getQueueNameFn;
28
+ /**
29
+ * Extract entity ID using the priority chain
30
+ */
31
+ private extractEntityId;
32
+ /**
33
+ * Enqueue a command/query for processing
34
+ *
35
+ * @param commandOrQuery - The command or query instance
36
+ * @param options - Optional settings (entityId override, jobOptions)
37
+ * @returns The created BullMQ job
38
+ *
39
+ * @example
40
+ * await queueBus
41
+ * .forProcessor(TableWorkerProcessor)
42
+ * .enqueue(new MakeBetCommand(tableId, bets, player));
43
+ *
44
+ * // With job options
45
+ * await queueBus
46
+ * .forProcessor(TableWorkerProcessor)
47
+ * .enqueue(new DealCommand(tableId), { jobOptions: { delay: 5000 } });
48
+ */
49
+ enqueue<T extends object>(commandOrQuery: T, options?: EnqueueOptions): Promise<Job>;
50
+ /**
51
+ * Enqueue and wait for result
52
+ */
53
+ enqueueAndWait<T extends object, R = any>(commandOrQuery: T, options?: EnqueueOptions & {
54
+ timeout?: number;
55
+ }): Promise<R>;
56
+ /**
57
+ * Enqueue multiple commands/queries in bulk
58
+ */
59
+ enqueueBulk<T extends object>(commandsOrQueries: T[], options?: EnqueueOptions): Promise<Job[]>;
60
+ }
61
+ //# sourceMappingURL=queue-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-target.d.ts","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD;;;;;;;GAOG;AACH,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAPtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAGpC,YAAY,EAAE,mBAAmB,EACjC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,EACzB,gBAAgB,EAAE,sBAAsB,EACxC,YAAY,CAAC,EAAE,aAAa,YAAA,EAC5B,kBAAkB,CAAC,EAAE,yBAAyB,YAAA;IAGjE;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CAAC,CAAC,SAAS,MAAM,EAC5B,cAAc,EAAE,CAAC,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,GAAG,CAAC;IA0Bf;;OAEG;IACG,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,GAAG,GAAG,EAC5C,cAAc,EAAE,CAAC,EACjB,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,CAAC,CAAC;IAab;;OAEG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,EAChC,iBAAiB,EAAE,CAAC,EAAE,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,GAAG,EAAE,CAAC;CA6BlB"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueueTarget = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const queue_bus_utils_1 = require("./queue-bus.utils");
6
+ /**
7
+ * QueueTarget - Fluent builder for targeting a specific processor's queue
8
+ *
9
+ * @example
10
+ * await queueBus
11
+ * .forProcessor(TableWorkerProcessor)
12
+ * .enqueue(new MakeBetCommand(tableId, bets, player));
13
+ */
14
+ class QueueTarget {
15
+ constructor(queueManager, processorClass, processorOptions, entityConfig, queueEventsManager) {
16
+ this.queueManager = queueManager;
17
+ this.processorClass = processorClass;
18
+ this.processorOptions = processorOptions;
19
+ this.entityConfig = entityConfig;
20
+ this.queueEventsManager = queueEventsManager;
21
+ this.logger = new common_1.Logger(QueueTarget.name);
22
+ }
23
+ /**
24
+ * Get the queue name function from the processor
25
+ */
26
+ getQueueNameFn() {
27
+ const { queueName } = this.processorOptions;
28
+ if (typeof queueName === 'function') {
29
+ return queueName;
30
+ }
31
+ if (typeof queueName === 'string') {
32
+ // Static queue name or pattern with {entityId}
33
+ return (entityId) => queueName.replace('{entityId}', entityId);
34
+ }
35
+ // Check entity config for custom queue name function
36
+ if (this.entityConfig?.queueName) {
37
+ return this.entityConfig.queueName;
38
+ }
39
+ // Default: entityType-{entityId}-queue
40
+ const { entityType } = this.processorOptions;
41
+ return (entityId) => `${entityType}-${entityId}-queue`;
42
+ }
43
+ /**
44
+ * Extract entity ID using the priority chain
45
+ */
46
+ extractEntityId(commandOrQuery, data) {
47
+ return (0, queue_bus_utils_1.extractEntityIdExplicit)(commandOrQuery, data, this.processorOptions.defaultEntityId, this.entityConfig, this.logger);
48
+ }
49
+ /**
50
+ * Enqueue a command/query for processing
51
+ *
52
+ * @param commandOrQuery - The command or query instance
53
+ * @param options - Optional settings (entityId override, jobOptions)
54
+ * @returns The created BullMQ job
55
+ *
56
+ * @example
57
+ * await queueBus
58
+ * .forProcessor(TableWorkerProcessor)
59
+ * .enqueue(new MakeBetCommand(tableId, bets, player));
60
+ *
61
+ * // With job options
62
+ * await queueBus
63
+ * .forProcessor(TableWorkerProcessor)
64
+ * .enqueue(new DealCommand(tableId), { jobOptions: { delay: 5000 } });
65
+ */
66
+ async enqueue(commandOrQuery, options) {
67
+ const jobName = (0, queue_bus_utils_1.getJobName)(commandOrQuery);
68
+ const data = (0, queue_bus_utils_1.extractData)(commandOrQuery);
69
+ const entityId = options?.entityId ?? this.extractEntityId(commandOrQuery, data);
70
+ // Get queue name from processor's queueName function
71
+ const queueNameFn = this.getQueueNameFn();
72
+ const queueName = queueNameFn(entityId);
73
+ // Add job via QueueManager (which handles event listening setup)
74
+ const { entityType } = this.processorOptions;
75
+ this.logger.debug(`[${this.processorClass.name}] Adding job ${jobName} to queue ${queueName}`);
76
+ // Get queue and ensure event listening
77
+ const queue = this.queueManager.getOrCreateQueue(queueName);
78
+ if (this.queueEventsManager) {
79
+ await this.queueEventsManager.ensureListening(queueName, entityType);
80
+ }
81
+ // Add job to queue
82
+ return queue.add(jobName, data, options?.jobOptions);
83
+ }
84
+ /**
85
+ * Enqueue and wait for result
86
+ */
87
+ async enqueueAndWait(commandOrQuery, options) {
88
+ const job = await this.enqueue(commandOrQuery, options);
89
+ const data = (0, queue_bus_utils_1.extractData)(commandOrQuery);
90
+ const entityId = options?.entityId ?? this.extractEntityId(commandOrQuery, data);
91
+ const queueNameFn = this.getQueueNameFn();
92
+ const queueName = queueNameFn(entityId);
93
+ const queueEvents = await this.queueManager.getQueueEvents(queueName);
94
+ return job.waitUntilFinished(queueEvents, options?.timeout);
95
+ }
96
+ /**
97
+ * Enqueue multiple commands/queries in bulk
98
+ */
99
+ async enqueueBulk(commandsOrQueries, options) {
100
+ if (commandsOrQueries.length === 0)
101
+ return [];
102
+ const firstCmd = commandsOrQueries[0];
103
+ const firstData = (0, queue_bus_utils_1.extractData)(firstCmd);
104
+ const entityId = options?.entityId ?? this.extractEntityId(firstCmd, firstData);
105
+ const queueNameFn = this.getQueueNameFn();
106
+ const queueName = queueNameFn(entityId);
107
+ const queue = this.queueManager.getOrCreateQueue(queueName);
108
+ // Ensure listening is set up for auto-spawn
109
+ const { entityType } = this.processorOptions;
110
+ if (this.queueEventsManager) {
111
+ await this.queueEventsManager.ensureListening(queueName, entityType);
112
+ }
113
+ const bulkJobs = commandsOrQueries.map((cmd) => ({
114
+ name: (0, queue_bus_utils_1.getJobName)(cmd),
115
+ data: (0, queue_bus_utils_1.extractData)(cmd),
116
+ opts: options?.jobOptions,
117
+ }));
118
+ this.logger.debug(`[${this.processorClass.name}] Adding ${bulkJobs.length} jobs to queue ${queueName}`);
119
+ return queue.addBulk(bulkJobs);
120
+ }
121
+ }
122
+ exports.QueueTarget = QueueTarget;
123
+ //# sourceMappingURL=queue-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-target.js","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-target.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import Redis from 'ioredis';
3
3
  import { IAtomicQueuesModuleConfig } from '../../domain';
4
4
  import { WorkerManagerService } from '../worker-manager';
5
5
  import { ServiceQueueManager } from '../service-queue';
6
+ import { SpawnQueueService } from '../spawn-queue';
6
7
  /**
7
8
  * Callback for spawning a worker for an entity.
8
9
  */
@@ -41,6 +42,7 @@ export declare class QueueEventsManagerService implements OnModuleDestroy {
41
42
  private readonly redis;
42
43
  private readonly config;
43
44
  private readonly workerManager;
45
+ private readonly spawnQueueService?;
44
46
  private readonly serviceQueueManager?;
45
47
  private readonly logger;
46
48
  private readonly registeredQueues;
@@ -48,7 +50,8 @@ export declare class QueueEventsManagerService implements OnModuleDestroy {
48
50
  private readonly useServiceQueue;
49
51
  private readonly entityPatterns;
50
52
  private onJobArrivedCallback;
51
- constructor(redis: Redis, config: IAtomicQueuesModuleConfig, workerManager: WorkerManagerService, serviceQueueManager?: ServiceQueueManager | undefined);
53
+ private readonly hotCache;
54
+ constructor(redis: Redis, config: IAtomicQueuesModuleConfig, workerManager: WorkerManagerService, spawnQueueService?: SpawnQueueService | undefined, serviceQueueManager?: ServiceQueueManager | undefined);
52
55
  /**
53
56
  * Register a callback to be called when a job arrives for any queue
54
57
  * and no worker exists. Used by ProcessorDiscoveryService.
@@ -69,9 +72,27 @@ export declare class QueueEventsManagerService implements OnModuleDestroy {
69
72
  */
70
73
  listenToQueue(queueName: string, entityType: string, extractEntityId: (queueName: string) => string): Promise<void>;
71
74
  /**
72
- * Handle job arrival - check if worker exists and spawn if needed.
75
+ * Handle job arrival — ultra-low-latency path.
76
+ *
77
+ * Hot path (worker exists in cache): 0 Redis calls. Instant return.
78
+ * Warm path (worker exists in Redis): 1 Redis EXISTS call (O(1)).
79
+ * Cold path (no worker): 1 SET NX claim + direct local creation.
80
+ *
81
+ * This replaces the old flow of: KEYS scan → spawn queue enqueue →
82
+ * spawn queue dequeue → create worker (multiple seconds) with:
83
+ * cache hit → 0ms, or SET NX + local create → ~10ms.
73
84
  */
74
85
  private handleJobArrived;
86
+ /**
87
+ * Evict a worker from the hot cache.
88
+ * Called by SpawnQueueService when idle sweep closes a worker,
89
+ * so the next job arrival will trigger a fresh spawn.
90
+ */
91
+ evictFromHotCache(workerName: string): void;
92
+ /**
93
+ * Get the hot cache size (for diagnostics).
94
+ */
95
+ getHotCacheSize(): number;
75
96
  /**
76
97
  * Listen to all queues that match a pattern.
77
98
  * Uses Redis SCAN to find existing queues and listens to them.
@@ -91,10 +112,6 @@ export declare class QueueEventsManagerService implements OnModuleDestroy {
91
112
  * Get all registered queue names.
92
113
  */
93
114
  getRegisteredQueues(): string[];
94
- /**
95
- * Scan Redis keys matching a pattern.
96
- */
97
- private scanKeys;
98
115
  /**
99
116
  * Cleanup on module destroy.
100
117
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queue-events-manager.service.d.ts","sourceRoot":"","sources":["../../../src/services/queue-events-manager/queue-events-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAwB,MAAM,kBAAkB,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;AAYnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,yBAA0B,YAAW,eAAe;IAiBhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAClB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IApBnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAG1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAIhB;IAGf,OAAO,CAAC,oBAAoB,CAAqC;gBAGjB,KAAK,EAAE,KAAK,EAEzC,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,oBAAoB,EACvB,mBAAmB,CAAC,EAAE,mBAAmB,YAAA;IAMxE;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAK7D;;;OAGG;IACH,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EACzC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GACzC,IAAI;IAyCP;;;;;;;OAOG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAC7C,OAAO,CAAC,IAAI,CAAC;IAiChB;;OAEG;YACW,gBAAgB;IA2D9B;;;;OAIG;IACG,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CjE;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3E;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;YACW,QAAQ;IAmBtB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBvC"}
1
+ {"version":3,"file":"queue-events-manager.service.d.ts","sourceRoot":"","sources":["../../../src/services/queue-events-manager/queue-events-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAwB,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;AAYnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,yBAA0B,YAAW,eAAe;IAyBhC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAClB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IA7BnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiD;IAClF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAG1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAIhB;IAGf,OAAO,CAAC,oBAAoB,CAAqC;IAQjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;gBAGH,KAAK,EAAE,KAAK,EAEzC,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,oBAAoB,EACvB,iBAAiB,CAAC,EAAE,iBAAiB,YAAA,EACrC,mBAAmB,CAAC,EAAE,mBAAmB,YAAA;IAMxE;;;OAGG;IACH,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAK7D;;;OAGG;IACH,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EACzC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GACzC,IAAI;IAyCP;;;;;;;OAOG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAC7C,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;;;;;;;OAUG;YACW,gBAAgB;IA2D9B;;;;OAIG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACG,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CjE;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB3E;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBvC"}
@@ -21,8 +21,10 @@ const common_1 = require("@nestjs/common");
21
21
  const bullmq_1 = require("bullmq");
22
22
  const ioredis_1 = __importDefault(require("ioredis"));
23
23
  const constants_1 = require("../constants");
24
+ const utils_1 = require("../../utils");
24
25
  const worker_manager_1 = require("../worker-manager");
25
26
  const service_queue_1 = require("../service-queue");
27
+ const spawn_queue_1 = require("../spawn-queue");
26
28
  /**
27
29
  * QueueEventsManagerService
28
30
  *
@@ -54,10 +56,11 @@ const service_queue_1 = require("../service-queue");
54
56
  * ```
55
57
  */
56
58
  let QueueEventsManagerService = QueueEventsManagerService_1 = class QueueEventsManagerService {
57
- constructor(redis, config, workerManager, serviceQueueManager) {
59
+ constructor(redis, config, workerManager, spawnQueueService, serviceQueueManager) {
58
60
  this.redis = redis;
59
61
  this.config = config;
60
62
  this.workerManager = workerManager;
63
+ this.spawnQueueService = spawnQueueService;
61
64
  this.serviceQueueManager = serviceQueueManager;
62
65
  this.logger = new common_1.Logger(QueueEventsManagerService_1.name);
63
66
  this.registeredQueues = new Map();
@@ -65,7 +68,14 @@ let QueueEventsManagerService = QueueEventsManagerService_1 = class QueueEventsM
65
68
  this.entityPatterns = new Map();
66
69
  // Global callback for spawning workers
67
70
  this.onJobArrivedCallback = null;
68
- this.keyPrefix = config.keyPrefix || 'aq';
71
+ // =========================================================================
72
+ // HOT CACHE — eliminates Redis calls on the warm path entirely.
73
+ // Once we know a worker exists (via Redis check or local creation),
74
+ // we cache the worker name. Subsequent job arrivals for that entity
75
+ // short-circuit without touching Redis at all.
76
+ // =========================================================================
77
+ this.hotCache = new Set();
78
+ this.keyPrefix = (0, utils_1.resolveKeyPrefix)(config);
69
79
  this.useServiceQueue = config.serviceQueue?.enabled !== false;
70
80
  }
71
81
  /**
@@ -146,45 +156,78 @@ let QueueEventsManagerService = QueueEventsManagerService_1 = class QueueEventsM
146
156
  this.logger.log(`Listening to queue events: ${queueName}`);
147
157
  }
148
158
  /**
149
- * Handle job arrival - check if worker exists and spawn if needed.
159
+ * Handle job arrival — ultra-low-latency path.
160
+ *
161
+ * Hot path (worker exists in cache): 0 Redis calls. Instant return.
162
+ * Warm path (worker exists in Redis): 1 Redis EXISTS call (O(1)).
163
+ * Cold path (no worker): 1 SET NX claim + direct local creation.
164
+ *
165
+ * This replaces the old flow of: KEYS scan → spawn queue enqueue →
166
+ * spawn queue dequeue → create worker (multiple seconds) with:
167
+ * cache hit → 0ms, or SET NX + local create → ~10ms.
150
168
  */
151
169
  async handleJobArrived(queueName, entityType, extractEntityId, jobId) {
152
170
  const entityId = extractEntityId(queueName);
153
- this.logger.debug(`[QueueEvents] Job ${jobId} waiting in ${queueName} (entity: ${entityType}/${entityId})`);
154
171
  // Check if worker already exists for this entity
155
172
  const pattern = this.entityPatterns.get(entityType);
156
- if (!pattern) {
157
- this.logger.warn(`No pattern registered for entity type: ${entityType}`);
173
+ if (!pattern)
158
174
  return;
159
- }
160
175
  const workerName = pattern.workerNameFn(entityId);
176
+ // ── HOT CACHE (0 Redis calls) ────────────────────────────────
177
+ if (this.hotCache.has(workerName))
178
+ return;
179
+ // ── WARM PATH (1 Redis EXISTS — O(1)) ────────────────────────
161
180
  const workerExists = await this.workerManager.workerExists(workerName);
162
181
  if (workerExists) {
163
- this.logger.debug(`[QueueEvents] Worker ${workerName} already exists, job will be processed`);
182
+ this.hotCache.add(workerName);
164
183
  return;
165
184
  }
166
- this.logger.log(`[QueueEvents] No worker for ${entityType}/${entityId}, triggering spawn`);
167
- // Trigger worker spawn through service queue for distributed coordination
168
- if (this.useServiceQueue && this.serviceQueueManager) {
185
+ // ── COLD PATH Direct local spawn ───────────────────────────
186
+ // Atomic claim via SET NX: if this pod wins, it creates the
187
+ // worker locally (no spawn queue round-trip). If another pod
188
+ // already claimed it, we skip (that pod is creating it).
189
+ const claimed = await this.workerManager.claimWorkerSlot(workerName);
190
+ if (claimed) {
191
+ this.logger.log(`[QueueEvents] Claimed ${entityType}/${entityId} — creating worker locally`);
192
+ // Direct local spawn (same-pod, no BullMQ round-trip)
169
193
  try {
170
- await this.serviceQueueManager.requestSpawnEntityWorker(entityType, entityId);
171
- this.logger.debug(`[QueueEvents] Worker spawn triggered via service queue for ${entityType}/${entityId}`);
194
+ if (this.onJobArrivedCallback) {
195
+ await this.onJobArrivedCallback(entityType, entityId, queueName);
196
+ }
197
+ else if (this.spawnQueueService) {
198
+ // If only spawn handler is registered, invoke it directly
199
+ await this.spawnQueueService.handleSpawnJobDirect?.(entityType, entityId);
200
+ }
201
+ this.hotCache.add(workerName);
172
202
  }
173
203
  catch (error) {
174
- this.logger.error(`[QueueEvents] Failed to trigger worker spawn: ${error.message}`);
204
+ this.logger.error(`[QueueEvents] Direct spawn failed for ${entityType}/${entityId}: ${error.message}`);
205
+ // Fall back to spawn queue if direct creation failed
206
+ if (this.spawnQueueService) {
207
+ await this.spawnQueueService.requestSpawn(entityType, entityId);
208
+ }
175
209
  }
176
210
  }
177
- else if (this.onJobArrivedCallback) {
178
- // Direct spawn (single instance mode)
179
- try {
180
- await this.onJobArrivedCallback(entityType, entityId, queueName);
181
- this.logger.debug(`[QueueEvents] Worker spawned directly for ${entityType}/${entityId}`);
182
- }
183
- catch (error) {
184
- this.logger.error(`[QueueEvents] Failed to spawn worker: ${error.message}`);
185
- }
211
+ else {
212
+ // Another pod claimed it — it'll be created there.
213
+ // Add to cache after a short delay (the other pod needs time to create).
214
+ setTimeout(() => this.hotCache.add(workerName), 500);
186
215
  }
187
216
  }
217
+ /**
218
+ * Evict a worker from the hot cache.
219
+ * Called by SpawnQueueService when idle sweep closes a worker,
220
+ * so the next job arrival will trigger a fresh spawn.
221
+ */
222
+ evictFromHotCache(workerName) {
223
+ this.hotCache.delete(workerName);
224
+ }
225
+ /**
226
+ * Get the hot cache size (for diagnostics).
227
+ */
228
+ getHotCacheSize() {
229
+ return this.hotCache.size;
230
+ }
188
231
  /**
189
232
  * Listen to all queues that match a pattern.
190
233
  * Uses Redis SCAN to find existing queues and listens to them.
@@ -200,7 +243,7 @@ let QueueEventsManagerService = QueueEventsManagerService_1 = class QueueEventsM
200
243
  const queuePattern = `${this.keyPrefix}:${entityType}:*:queue`;
201
244
  const bulkQueuePattern = `bull:${this.keyPrefix}:${entityType}:*:queue:*`;
202
245
  // Scan for existing BullMQ queue keys
203
- const keys = await this.scanKeys(bulkQueuePattern);
246
+ const keys = await (0, utils_1.scanKeys)(this.redis, bulkQueuePattern);
204
247
  const queueNames = new Set();
205
248
  for (const key of keys) {
206
249
  // Extract queue name from BullMQ key
@@ -268,19 +311,6 @@ let QueueEventsManagerService = QueueEventsManagerService_1 = class QueueEventsM
268
311
  getRegisteredQueues() {
269
312
  return Array.from(this.registeredQueues.keys());
270
313
  }
271
- /**
272
- * Scan Redis keys matching a pattern.
273
- */
274
- async scanKeys(pattern) {
275
- let cursor = '0';
276
- const keys = [];
277
- do {
278
- const [nextCursor, scanKeys] = await this.redis.scan(cursor, 'MATCH', pattern, 'COUNT', 100);
279
- cursor = nextCursor;
280
- keys.push(...scanKeys);
281
- } while (cursor !== '0');
282
- return keys;
283
- }
284
314
  /**
285
315
  * Cleanup on module destroy.
286
316
  */
@@ -305,7 +335,9 @@ exports.QueueEventsManagerService = QueueEventsManagerService = QueueEventsManag
305
335
  __param(0, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_REDIS)),
306
336
  __param(1, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_CONFIG)),
307
337
  __param(3, (0, common_1.Optional)()),
338
+ __param(4, (0, common_1.Optional)()),
308
339
  __metadata("design:paramtypes", [ioredis_1.default, Object, worker_manager_1.WorkerManagerService,
340
+ spawn_queue_1.SpawnQueueService,
309
341
  service_queue_1.ServiceQueueManager])
310
342
  ], QueueEventsManagerService);
311
343
  //# sourceMappingURL=queue-events-manager.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue-events-manager.service.js","sourceRoot":"","sources":["../../../src/services/queue-events-manager/queue-events-manager.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue-events-manager.service.js","sourceRoot":"","sources":["../../../src/services/queue-events-manager/queue-events-manager.service.ts"],"names":[],"mappings":"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"}
@@ -112,10 +112,6 @@ export declare class ResourceLockService implements IResourceLockService {
112
112
  * Get the Redis key for a lock.
113
113
  */
114
114
  private getLockKey;
115
- /**
116
- * Scan Redis keys matching a pattern.
117
- */
118
- private scanKeys;
119
115
  /**
120
116
  * Fisher-Yates shuffle algorithm.
121
117
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lock.service.d.ts","sourceRoot":"","sources":["../../../src/services/resource-lock/resource-lock.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AAGtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBACa,mBAAoB,YAAW,oBAAoB;IAwD/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAzDzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAalC;IAGF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAiBlC;IAGF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAYjC;gBAG8C,KAAK,EAAE,KAAK,EAEzC,MAAM,EAAE,yBAAyB;IAKpD;;;;;OAKG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,SAAK,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC;IAiDvB;;OAEG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAgBnB;;;OAGG;IACG,gBAAgB,CACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IA+BnB;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1E;;OAEG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkBhC;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC;IAyB3B;;;;;;OAMG;IACG,oBAAoB,CACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,SAAK,GACd,OAAO,CAAC,WAAW,CAAC;IA8BvB;;OAEG;IACG,UAAU,CACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IA2BnB;;OAEG;IACG,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,MAAM,EAAE,aAAa,EAAE,CAAC;QACxB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IAyBF;;;OAGG;IACG,mBAAmB,CACvB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IAKnB;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB1E;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;YACW,QAAQ;IAmBtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAOrB"}
1
+ {"version":3,"file":"resource-lock.service.d.ts","sourceRoot":"","sources":["../../../src/services/resource-lock/resource-lock.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AAItB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,qBACa,mBAAoB,YAAW,oBAAoB;IAwD/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAzDzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAalC;IAGF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAiBlC;IAGF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAYjC;gBAG8C,KAAK,EAAE,KAAK,EAEzC,MAAM,EAAE,yBAAyB;IAKpD;;;;;OAKG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,SAAK,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,WAAW,CAAC;IAiDvB;;OAEG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IAgBnB;;;OAGG;IACG,gBAAgB,CACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IA+BnB;;OAEG;IACG,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1E;;OAEG;IACG,WAAW,CACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkBhC;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,EAAE,CAAC;IAyB3B;;;;;;OAMG;IACG,oBAAoB,CACxB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,SAAK,GACd,OAAO,CAAC,WAAW,CAAC;IA8BvB;;OAEG;IACG,UAAU,CACd,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IA2BnB;;OAEG;IACG,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QACxD,MAAM,EAAE,aAAa,EAAE,CAAC;QACxB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IAyBF;;;OAGG;IACG,mBAAmB,CACvB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IAKnB;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB1E;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,YAAY;CAOrB"}
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
19
19
  exports.ResourceLockService = void 0;
20
20
  const common_1 = require("@nestjs/common");
21
21
  const ioredis_1 = __importDefault(require("ioredis"));
22
+ const utils_1 = require("../../utils");
22
23
  const constants_1 = require("../constants");
23
24
  /**
24
25
  * ResourceLockService
@@ -116,7 +117,7 @@ let ResourceLockService = ResourceLockService_1 = class ResourceLockService {
116
117
  return 0 -- Lock doesn't exist
117
118
  end
118
119
  `;
119
- this.keyPrefix = config.keyPrefix || 'aq';
120
+ this.keyPrefix = (0, utils_1.resolveKeyPrefix)(config);
120
121
  }
121
122
  /**
122
123
  * Acquire a lock on a resource.
@@ -227,7 +228,7 @@ let ResourceLockService = ResourceLockService_1 = class ResourceLockService {
227
228
  async getOwnerLocks(ownerType, ownerId) {
228
229
  // Scan for all locks and filter by owner
229
230
  const pattern = `${this.keyPrefix}:lock:*`;
230
- const keys = await this.scanKeys(pattern);
231
+ const keys = await (0, utils_1.scanKeys)(this.redis, pattern);
231
232
  const locks = [];
232
233
  for (const key of keys) {
233
234
  const data = await this.redis.get(key);
@@ -293,7 +294,7 @@ let ResourceLockService = ResourceLockService_1 = class ResourceLockService {
293
294
  */
294
295
  async getResourceTypeLocks(resourceType) {
295
296
  const pattern = `${this.keyPrefix}:lock:${resourceType}:*`;
296
- const keys = await this.scanKeys(pattern);
297
+ const keys = await (0, utils_1.scanKeys)(this.redis, pattern);
297
298
  const locked = [];
298
299
  for (const key of keys) {
299
300
  const data = await this.redis.get(key);
@@ -345,19 +346,6 @@ let ResourceLockService = ResourceLockService_1 = class ResourceLockService {
345
346
  getLockKey(resourceType, resourceId) {
346
347
  return `${this.keyPrefix}:lock:${resourceType}:${resourceId}`;
347
348
  }
348
- /**
349
- * Scan Redis keys matching a pattern.
350
- */
351
- async scanKeys(pattern) {
352
- let cursor = '0';
353
- const keys = [];
354
- do {
355
- const [nextCursor, scanKeys] = await this.redis.scan(cursor, 'MATCH', pattern, 'COUNT', 100);
356
- cursor = nextCursor;
357
- keys.push(...scanKeys);
358
- } while (cursor !== '0');
359
- return keys;
360
- }
361
349
  /**
362
350
  * Fisher-Yates shuffle algorithm.
363
351
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resource-lock.service.js","sourceRoot":"","sources":["../../../src/services/resource-lock/resource-lock.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-lock.service.js","sourceRoot":"","sources":["../../../src/services/resource-lock/resource-lock.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './service-queue.service';
2
+ export * from './service-queue.types';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/service-queue/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/service-queue/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./service-queue.service"), exports);
18
+ __exportStar(require("./service-queue.types"), exports);
18
19
  //# sourceMappingURL=index.js.map