atomic-queues 1.6.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +182 -411
- package/dist/cli/generators/json-schema.d.ts +3 -0
- package/dist/cli/generators/json-schema.d.ts.map +1 -0
- package/dist/cli/generators/json-schema.js +31 -0
- package/dist/cli/generators/json-schema.js.map +1 -0
- package/dist/cli/generators/typescript.d.ts +3 -0
- package/dist/cli/generators/typescript.d.ts.map +1 -0
- package/dist/cli/generators/typescript.js +62 -0
- package/dist/cli/generators/typescript.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +156 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/decorators/actor.decorators.d.ts +4 -0
- package/dist/decorators/actor.decorators.d.ts.map +1 -0
- package/dist/decorators/actor.decorators.js +32 -0
- package/dist/decorators/actor.decorators.js.map +1 -0
- package/dist/decorators/constants.d.ts +5 -12
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +10 -16
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/index.d.ts +4 -4
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +4 -4
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/interfaces.d.ts +18 -78
- package/dist/decorators/interfaces.d.ts.map +1 -1
- package/dist/decorators/metadata-readers.d.ts +5 -26
- package/dist/decorators/metadata-readers.d.ts.map +1 -1
- package/dist/decorators/metadata-readers.js +16 -33
- package/dist/decorators/metadata-readers.js.map +1 -1
- package/dist/decorators/schema.decorators.d.ts +2 -0
- package/dist/decorators/schema.decorators.d.ts.map +1 -0
- package/dist/decorators/schema.decorators.js +13 -0
- package/dist/decorators/schema.decorators.js.map +1 -0
- package/dist/domain/interfaces/config.interfaces.d.ts +52 -153
- package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -1
- package/dist/domain/interfaces/index.d.ts +0 -7
- package/dist/domain/interfaces/index.d.ts.map +1 -1
- package/dist/domain/interfaces/index.js +0 -7
- package/dist/domain/interfaces/index.js.map +1 -1
- package/dist/domain/interfaces/job.interfaces.d.ts +32 -65
- package/dist/domain/interfaces/job.interfaces.d.ts.map +1 -1
- package/dist/index.d.ts +0 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -39
- package/dist/index.js.map +1 -1
- package/dist/module/atomic-queues.module.d.ts +0 -83
- package/dist/module/atomic-queues.module.d.ts.map +1 -1
- package/dist/module/atomic-queues.module.js +35 -134
- package/dist/module/atomic-queues.module.js.map +1 -1
- package/dist/services/actor-registry/actor-registry.service.d.ts +30 -0
- package/dist/services/actor-registry/actor-registry.service.d.ts.map +1 -0
- package/dist/services/actor-registry/actor-registry.service.js +186 -0
- package/dist/services/actor-registry/actor-registry.service.js.map +1 -0
- package/dist/services/actor-registry/index.d.ts +2 -0
- package/dist/services/actor-registry/index.d.ts.map +1 -0
- package/dist/services/actor-registry/index.js +18 -0
- package/dist/services/actor-registry/index.js.map +1 -0
- package/dist/services/actor-system/actor-system.service.d.ts +19 -0
- package/dist/services/actor-system/actor-system.service.d.ts.map +1 -0
- package/dist/services/actor-system/actor-system.service.js +86 -0
- package/dist/services/actor-system/actor-system.service.js.map +1 -0
- package/dist/services/actor-system/index.d.ts +2 -0
- package/dist/services/actor-system/index.d.ts.map +1 -0
- package/dist/services/{cron-manager → actor-system}/index.js +1 -1
- package/dist/services/actor-system/index.js.map +1 -0
- package/dist/services/command-discovery/command-discovery.service.d.ts +6 -53
- package/dist/services/command-discovery/command-discovery.service.d.ts.map +1 -1
- package/dist/services/command-discovery/command-discovery.service.js +0 -59
- package/dist/services/command-discovery/command-discovery.service.js.map +1 -1
- package/dist/services/constants.d.ts +2 -9
- package/dist/services/constants.d.ts.map +1 -1
- package/dist/services/constants.js +3 -10
- package/dist/services/constants.js.map +1 -1
- package/dist/services/executor-pool/executor-pool.service.d.ts +31 -0
- package/dist/services/executor-pool/executor-pool.service.d.ts.map +1 -0
- package/dist/services/executor-pool/executor-pool.service.js +147 -0
- package/dist/services/executor-pool/executor-pool.service.js.map +1 -0
- package/dist/services/executor-pool/index.d.ts +2 -0
- package/dist/services/executor-pool/index.d.ts.map +1 -0
- package/dist/services/{queue-manager → executor-pool}/index.js +1 -1
- package/dist/services/executor-pool/index.js.map +1 -0
- package/dist/services/gate/gate.service.d.ts +17 -0
- package/dist/services/gate/gate.service.d.ts.map +1 -0
- package/dist/services/gate/gate.service.js +66 -0
- package/dist/services/gate/gate.service.js.map +1 -0
- package/dist/services/gate/index.d.ts +2 -0
- package/dist/services/gate/index.d.ts.map +1 -0
- package/dist/services/{spawn-queue → gate}/index.js +1 -1
- package/dist/services/gate/index.js.map +1 -0
- package/dist/services/handler-executor/handler-executor.service.d.ts +32 -0
- package/dist/services/handler-executor/handler-executor.service.d.ts.map +1 -0
- package/dist/services/handler-executor/handler-executor.service.js +186 -0
- package/dist/services/handler-executor/handler-executor.service.js.map +1 -0
- package/dist/services/handler-executor/index.d.ts +2 -0
- package/dist/services/handler-executor/index.d.ts.map +1 -0
- package/dist/services/handler-executor/index.js +18 -0
- package/dist/services/handler-executor/index.js.map +1 -0
- package/dist/services/index.d.ts +11 -12
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +11 -12
- package/dist/services/index.js.map +1 -1
- package/dist/services/log/index.d.ts +2 -0
- package/dist/services/log/index.d.ts.map +1 -0
- package/dist/services/{index-manager → log}/index.js +1 -1
- package/dist/services/log/index.js.map +1 -0
- package/dist/services/log/log.service.d.ts +21 -0
- package/dist/services/log/log.service.d.ts.map +1 -0
- package/dist/services/log/log.service.js +92 -0
- package/dist/services/log/log.service.js.map +1 -0
- package/dist/services/queue-bus/index.d.ts +0 -4
- package/dist/services/queue-bus/index.d.ts.map +1 -1
- package/dist/services/queue-bus/index.js +0 -4
- package/dist/services/queue-bus/index.js.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.d.ts +44 -198
- package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.js +103 -259
- package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
- package/dist/services/queue-bus/queue-bus.utils.d.ts +0 -28
- package/dist/services/queue-bus/queue-bus.utils.d.ts.map +1 -1
- package/dist/services/queue-bus/queue-bus.utils.js +1 -41
- package/dist/services/queue-bus/queue-bus.utils.js.map +1 -1
- package/dist/services/registry/index.d.ts +4 -0
- package/dist/services/registry/index.d.ts.map +1 -0
- package/dist/services/{queue-events-manager → registry}/index.js +3 -1
- package/dist/services/registry/index.js.map +1 -0
- package/dist/services/registry/registry.service.d.ts +43 -0
- package/dist/services/registry/registry.service.d.ts.map +1 -0
- package/dist/services/registry/registry.service.js +379 -0
- package/dist/services/registry/registry.service.js.map +1 -0
- package/dist/services/registry/registry.types.d.ts +24 -0
- package/dist/services/registry/registry.types.d.ts.map +1 -0
- package/dist/{domain/interfaces/lock.interfaces.js → services/registry/registry.types.js} +1 -1
- package/dist/services/registry/registry.types.js.map +1 -0
- package/dist/services/registry/schema-converter.d.ts +2 -0
- package/dist/services/registry/schema-converter.d.ts.map +1 -0
- package/dist/services/registry/schema-converter.js +27 -0
- package/dist/services/registry/schema-converter.js.map +1 -0
- package/dist/services/result-collector/index.d.ts +2 -0
- package/dist/services/result-collector/index.d.ts.map +1 -0
- package/dist/services/result-collector/index.js +18 -0
- package/dist/services/result-collector/index.js.map +1 -0
- package/dist/services/result-collector/result-collector.service.d.ts +17 -0
- package/dist/services/result-collector/result-collector.service.d.ts.map +1 -0
- package/dist/services/result-collector/result-collector.service.js +92 -0
- package/dist/services/result-collector/result-collector.service.js.map +1 -0
- package/dist/services/scheduler/index.d.ts +2 -0
- package/dist/services/scheduler/index.d.ts.map +1 -0
- package/dist/services/{job-processor → scheduler}/index.js +1 -1
- package/dist/services/scheduler/index.js.map +1 -0
- package/dist/services/scheduler/scheduler.service.d.ts +17 -0
- package/dist/services/scheduler/scheduler.service.d.ts.map +1 -0
- package/dist/services/scheduler/scheduler.service.js +116 -0
- package/dist/services/scheduler/scheduler.service.js.map +1 -0
- package/dist/services/shutdown/index.d.ts +2 -0
- package/dist/services/shutdown/index.d.ts.map +1 -0
- package/dist/services/shutdown/index.js +18 -0
- package/dist/services/shutdown/index.js.map +1 -0
- package/dist/services/shutdown/shutdown.service.d.ts +8 -0
- package/dist/services/shutdown/shutdown.service.d.ts.map +1 -0
- package/dist/services/shutdown/shutdown.service.js +29 -0
- package/dist/services/shutdown/shutdown.service.js.map +1 -0
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/naming.utils.d.ts +0 -16
- package/dist/utils/naming.utils.d.ts.map +1 -1
- package/dist/utils/naming.utils.js +0 -29
- package/dist/utils/naming.utils.js.map +1 -1
- package/package.json +19 -11
- package/dist/decorators/legacy.decorators.d.ts +0 -36
- package/dist/decorators/legacy.decorators.d.ts.map +0 -1
- package/dist/decorators/legacy.decorators.js +0 -61
- package/dist/decorators/legacy.decorators.js.map +0 -1
- package/dist/decorators/scaler.decorators.d.ts +0 -65
- package/dist/decorators/scaler.decorators.d.ts.map +0 -1
- package/dist/decorators/scaler.decorators.js +0 -103
- package/dist/decorators/scaler.decorators.js.map +0 -1
- package/dist/decorators/type-guards.d.ts +0 -18
- package/dist/decorators/type-guards.d.ts.map +0 -1
- package/dist/decorators/type-guards.js +0 -32
- package/dist/decorators/type-guards.js.map +0 -1
- package/dist/decorators/worker.decorators.d.ts +0 -58
- package/dist/decorators/worker.decorators.d.ts.map +0 -1
- package/dist/decorators/worker.decorators.js +0 -92
- package/dist/decorators/worker.decorators.js.map +0 -1
- package/dist/domain/interfaces/event.interfaces.d.ts +0 -71
- package/dist/domain/interfaces/event.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/event.interfaces.js +0 -3
- package/dist/domain/interfaces/event.interfaces.js.map +0 -1
- package/dist/domain/interfaces/index-tracking.interfaces.d.ts +0 -69
- package/dist/domain/interfaces/index-tracking.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/index-tracking.interfaces.js +0 -3
- package/dist/domain/interfaces/index-tracking.interfaces.js.map +0 -1
- package/dist/domain/interfaces/lock.interfaces.d.ts +0 -54
- package/dist/domain/interfaces/lock.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/lock.interfaces.js.map +0 -1
- package/dist/domain/interfaces/process.interfaces.d.ts +0 -44
- package/dist/domain/interfaces/process.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/process.interfaces.js +0 -3
- package/dist/domain/interfaces/process.interfaces.js.map +0 -1
- package/dist/domain/interfaces/queue.interfaces.d.ts +0 -46
- package/dist/domain/interfaces/queue.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/queue.interfaces.js +0 -3
- package/dist/domain/interfaces/queue.interfaces.js.map +0 -1
- package/dist/domain/interfaces/scaling.interfaces.d.ts +0 -62
- package/dist/domain/interfaces/scaling.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/scaling.interfaces.js +0 -3
- package/dist/domain/interfaces/scaling.interfaces.js.map +0 -1
- package/dist/domain/interfaces/worker.interfaces.d.ts +0 -120
- package/dist/domain/interfaces/worker.interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces/worker.interfaces.js +0 -3
- package/dist/domain/interfaces/worker.interfaces.js.map +0 -1
- package/dist/services/cron-manager/cron-manager.service.d.ts +0 -199
- package/dist/services/cron-manager/cron-manager.service.d.ts.map +0 -1
- package/dist/services/cron-manager/cron-manager.service.js +0 -583
- package/dist/services/cron-manager/cron-manager.service.js.map +0 -1
- package/dist/services/cron-manager/index.d.ts +0 -2
- package/dist/services/cron-manager/index.d.ts.map +0 -1
- package/dist/services/cron-manager/index.js.map +0 -1
- package/dist/services/index-manager/index-manager.service.d.ts +0 -142
- package/dist/services/index-manager/index-manager.service.d.ts.map +0 -1
- package/dist/services/index-manager/index-manager.service.js +0 -325
- package/dist/services/index-manager/index-manager.service.js.map +0 -1
- package/dist/services/index-manager/index.d.ts +0 -2
- package/dist/services/index-manager/index.d.ts.map +0 -1
- package/dist/services/index-manager/index.js.map +0 -1
- package/dist/services/job-processor/index.d.ts +0 -2
- package/dist/services/job-processor/index.d.ts.map +0 -1
- package/dist/services/job-processor/index.js.map +0 -1
- package/dist/services/job-processor/job-processor.service.d.ts +0 -156
- package/dist/services/job-processor/job-processor.service.d.ts.map +0 -1
- package/dist/services/job-processor/job-processor.service.js +0 -331
- package/dist/services/job-processor/job-processor.service.js.map +0 -1
- package/dist/services/processor-discovery/decorator-discovery.service.d.ts +0 -40
- package/dist/services/processor-discovery/decorator-discovery.service.d.ts.map +0 -1
- package/dist/services/processor-discovery/decorator-discovery.service.js +0 -191
- package/dist/services/processor-discovery/decorator-discovery.service.js.map +0 -1
- package/dist/services/processor-discovery/index.d.ts +0 -6
- package/dist/services/processor-discovery/index.d.ts.map +0 -1
- package/dist/services/processor-discovery/index.js +0 -22
- package/dist/services/processor-discovery/index.js.map +0 -1
- package/dist/services/processor-discovery/processor-discovery.service.d.ts +0 -98
- package/dist/services/processor-discovery/processor-discovery.service.d.ts.map +0 -1
- package/dist/services/processor-discovery/processor-discovery.service.js +0 -258
- package/dist/services/processor-discovery/processor-discovery.service.js.map +0 -1
- package/dist/services/processor-discovery/processor-registry.d.ts +0 -58
- package/dist/services/processor-discovery/processor-registry.d.ts.map +0 -1
- package/dist/services/processor-discovery/processor-registry.js +0 -74
- package/dist/services/processor-discovery/processor-registry.js.map +0 -1
- package/dist/services/processor-discovery/scaling-registration.service.d.ts +0 -60
- package/dist/services/processor-discovery/scaling-registration.service.d.ts.map +0 -1
- package/dist/services/processor-discovery/scaling-registration.service.js +0 -261
- package/dist/services/processor-discovery/scaling-registration.service.js.map +0 -1
- package/dist/services/processor-discovery/worker-factory.service.d.ts +0 -54
- package/dist/services/processor-discovery/worker-factory.service.d.ts.map +0 -1
- package/dist/services/processor-discovery/worker-factory.service.js +0 -185
- package/dist/services/processor-discovery/worker-factory.service.js.map +0 -1
- package/dist/services/queue-bus/entity-target.d.ts +0 -58
- package/dist/services/queue-bus/entity-target.d.ts.map +0 -1
- package/dist/services/queue-bus/entity-target.js +0 -109
- package/dist/services/queue-bus/entity-target.js.map +0 -1
- package/dist/services/queue-bus/queue-bus.types.d.ts +0 -40
- package/dist/services/queue-bus/queue-bus.types.d.ts.map +0 -1
- package/dist/services/queue-bus/queue-bus.types.js +0 -3
- package/dist/services/queue-bus/queue-bus.types.js.map +0 -1
- package/dist/services/queue-bus/queue-target.d.ts +0 -61
- package/dist/services/queue-bus/queue-target.d.ts.map +0 -1
- package/dist/services/queue-bus/queue-target.js +0 -123
- package/dist/services/queue-bus/queue-target.js.map +0 -1
- package/dist/services/queue-events-manager/index.d.ts +0 -2
- package/dist/services/queue-events-manager/index.d.ts.map +0 -1
- package/dist/services/queue-events-manager/index.js.map +0 -1
- package/dist/services/queue-events-manager/queue-events-manager.service.d.ts +0 -120
- package/dist/services/queue-events-manager/queue-events-manager.service.d.ts.map +0 -1
- package/dist/services/queue-events-manager/queue-events-manager.service.js +0 -343
- package/dist/services/queue-events-manager/queue-events-manager.service.js.map +0 -1
- package/dist/services/queue-manager/index.d.ts +0 -2
- package/dist/services/queue-manager/index.d.ts.map +0 -1
- package/dist/services/queue-manager/index.js.map +0 -1
- package/dist/services/queue-manager/queue-manager.service.d.ts +0 -148
- package/dist/services/queue-manager/queue-manager.service.d.ts.map +0 -1
- package/dist/services/queue-manager/queue-manager.service.js +0 -348
- package/dist/services/queue-manager/queue-manager.service.js.map +0 -1
- package/dist/services/resource-lock/index.d.ts +0 -2
- package/dist/services/resource-lock/index.d.ts.map +0 -1
- package/dist/services/resource-lock/index.js +0 -18
- package/dist/services/resource-lock/index.js.map +0 -1
- package/dist/services/resource-lock/resource-lock.service.d.ts +0 -120
- package/dist/services/resource-lock/resource-lock.service.d.ts.map +0 -1
- package/dist/services/resource-lock/resource-lock.service.js +0 -367
- package/dist/services/resource-lock/resource-lock.service.js.map +0 -1
- package/dist/services/service-queue/index.d.ts +0 -3
- package/dist/services/service-queue/index.d.ts.map +0 -1
- package/dist/services/service-queue/index.js +0 -19
- package/dist/services/service-queue/index.js.map +0 -1
- package/dist/services/service-queue/service-queue.service.d.ts +0 -199
- package/dist/services/service-queue/service-queue.service.d.ts.map +0 -1
- package/dist/services/service-queue/service-queue.service.js +0 -617
- package/dist/services/service-queue/service-queue.service.js.map +0 -1
- package/dist/services/service-queue/service-queue.types.d.ts +0 -32
- package/dist/services/service-queue/service-queue.types.d.ts.map +0 -1
- package/dist/services/service-queue/service-queue.types.js +0 -27
- package/dist/services/service-queue/service-queue.types.js.map +0 -1
- package/dist/services/shutdown-state/index.d.ts +0 -2
- package/dist/services/shutdown-state/index.d.ts.map +0 -1
- package/dist/services/shutdown-state/index.js +0 -18
- package/dist/services/shutdown-state/index.js.map +0 -1
- package/dist/services/shutdown-state/shutdown-state.service.d.ts +0 -69
- package/dist/services/shutdown-state/shutdown-state.service.d.ts.map +0 -1
- package/dist/services/shutdown-state/shutdown-state.service.js +0 -127
- package/dist/services/shutdown-state/shutdown-state.service.js.map +0 -1
- package/dist/services/spawn-queue/index.d.ts +0 -2
- package/dist/services/spawn-queue/index.d.ts.map +0 -1
- package/dist/services/spawn-queue/index.js.map +0 -1
- package/dist/services/spawn-queue/spawn-queue.service.d.ts +0 -119
- package/dist/services/spawn-queue/spawn-queue.service.d.ts.map +0 -1
- package/dist/services/spawn-queue/spawn-queue.service.js +0 -273
- package/dist/services/spawn-queue/spawn-queue.service.js.map +0 -1
- package/dist/services/worker-manager/index.d.ts +0 -2
- package/dist/services/worker-manager/index.d.ts.map +0 -1
- package/dist/services/worker-manager/index.js +0 -18
- package/dist/services/worker-manager/index.js.map +0 -1
- package/dist/services/worker-manager/worker-manager.service.d.ts +0 -221
- package/dist/services/worker-manager/worker-manager.service.d.ts.map +0 -1
- package/dist/services/worker-manager/worker-manager.service.js +0 -591
- package/dist/services/worker-manager/worker-manager.service.js.map +0 -1
- package/dist/utils/helpers.d.ts +0 -5
- package/dist/utils/helpers.d.ts.map +0 -1
- package/dist/utils/helpers.js +0 -21
- package/dist/utils/helpers.js.map +0 -1
- package/dist/utils/job.utils.d.ts +0 -50
- package/dist/utils/job.utils.d.ts.map +0 -1
- package/dist/utils/job.utils.js +0 -89
- package/dist/utils/job.utils.js.map +0 -1
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ServiceQueueJobNames = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Service-level job names for global atomic operations.
|
|
6
|
-
* These operations MUST be processed by exactly ONE worker across the entire distributed system.
|
|
7
|
-
*/
|
|
8
|
-
var ServiceQueueJobNames;
|
|
9
|
-
(function (ServiceQueueJobNames) {
|
|
10
|
-
/** Get the count of all workers across all nodes */
|
|
11
|
-
ServiceQueueJobNames["GET_GLOBAL_WORKER_COUNT"] = "get-global-worker-count";
|
|
12
|
-
/** Get workers for a specific entity across all nodes */
|
|
13
|
-
ServiceQueueJobNames["GET_ENTITY_WORKERS"] = "get-entity-workers";
|
|
14
|
-
/** Verify ownership of a resource */
|
|
15
|
-
ServiceQueueJobNames["VERIFY_OWNERSHIP"] = "verify-ownership";
|
|
16
|
-
/** Acquire global lock */
|
|
17
|
-
ServiceQueueJobNames["ACQUIRE_GLOBAL_LOCK"] = "acquire-global-lock";
|
|
18
|
-
/** Release global lock */
|
|
19
|
-
ServiceQueueJobNames["RELEASE_GLOBAL_LOCK"] = "release-global-lock";
|
|
20
|
-
/** Run scaling cycle for CronManager - triggers worker spawn/terminate decisions */
|
|
21
|
-
ServiceQueueJobNames["RUN_SCALING_CYCLE"] = "run-scaling-cycle";
|
|
22
|
-
/** Spawn a worker for a specific entity - used when opening a table/entity */
|
|
23
|
-
ServiceQueueJobNames["SPAWN_ENTITY_WORKER"] = "spawn-entity-worker";
|
|
24
|
-
/** Custom service operation */
|
|
25
|
-
ServiceQueueJobNames["CUSTOM"] = "custom";
|
|
26
|
-
})(ServiceQueueJobNames || (exports.ServiceQueueJobNames = ServiceQueueJobNames = {}));
|
|
27
|
-
//# sourceMappingURL=service-queue.types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service-queue.types.js","sourceRoot":"","sources":["../../../src/services/service-queue/service-queue.types.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,IAAY,oBAiBX;AAjBD,WAAY,oBAAoB;IAC9B,oDAAoD;IACpD,2EAAmD,CAAA;IACnD,yDAAyD;IACzD,iEAAyC,CAAA;IACzC,qCAAqC;IACrC,6DAAqC,CAAA;IACrC,0BAA0B;IAC1B,mEAA2C,CAAA;IAC3C,0BAA0B;IAC1B,mEAA2C,CAAA;IAC3C,oFAAoF;IACpF,+DAAuC,CAAA;IACvC,8EAA8E;IAC9E,mEAA2C,CAAA;IAC3C,+BAA+B;IAC/B,yCAAiB,CAAA;AACnB,CAAC,EAjBW,oBAAoB,oCAApB,oBAAoB,QAiB/B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/shutdown-state/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./shutdown-state.service"), exports);
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/shutdown-state/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
-
/**
|
|
3
|
-
* ShutdownStateService
|
|
4
|
-
*
|
|
5
|
-
* Tracks whether the application is in the process of shutting down.
|
|
6
|
-
* This is used to prevent cleanup operations (like clearing player data)
|
|
7
|
-
* when sockets disconnect due to server shutdown vs intentional disconnect.
|
|
8
|
-
*
|
|
9
|
-
* IMPORTANT: We use direct process signal handlers (not onApplicationShutdown)
|
|
10
|
-
* because onApplicationShutdown is called AFTER sockets disconnect, which is too late.
|
|
11
|
-
* By registering our own handlers in onModuleInit, we catch the signal BEFORE
|
|
12
|
-
* any cleanup happens.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* @Injectable()
|
|
17
|
-
* export class MyService {
|
|
18
|
-
* constructor(private readonly shutdownState: ShutdownStateService) {}
|
|
19
|
-
*
|
|
20
|
-
* async handleDisconnect(client: Socket) {
|
|
21
|
-
* // Skip cleanup during graceful shutdown
|
|
22
|
-
* if (this.shutdownState.isShuttingDown) {
|
|
23
|
-
* this.logger.warn('Skipping cleanup - server is shutting down');
|
|
24
|
-
* return;
|
|
25
|
-
* }
|
|
26
|
-
*
|
|
27
|
-
* // Normal cleanup logic
|
|
28
|
-
* await this.cleanupUserSession(client);
|
|
29
|
-
* }
|
|
30
|
-
* }
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export declare class ShutdownStateService implements OnModuleInit {
|
|
34
|
-
private readonly logger;
|
|
35
|
-
private shuttingDown;
|
|
36
|
-
private shutdownSignal;
|
|
37
|
-
private shutdownTimestamp;
|
|
38
|
-
private readonly shutdownCallbacks;
|
|
39
|
-
/**
|
|
40
|
-
* Register signal handlers early to catch shutdown before socket disconnects.
|
|
41
|
-
*/
|
|
42
|
-
onModuleInit(): void;
|
|
43
|
-
/**
|
|
44
|
-
* Check if the application is currently shutting down.
|
|
45
|
-
*/
|
|
46
|
-
get isShuttingDown(): boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Get the signal that triggered shutdown (if any).
|
|
49
|
-
*/
|
|
50
|
-
getShutdownSignal(): NodeJS.Signals | null;
|
|
51
|
-
/**
|
|
52
|
-
* Get the timestamp when shutdown was initiated.
|
|
53
|
-
*/
|
|
54
|
-
getShutdownTimestamp(): Date | null;
|
|
55
|
-
/**
|
|
56
|
-
* Register a callback to be executed when shutdown is detected.
|
|
57
|
-
* These callbacks are executed synchronously in order of registration.
|
|
58
|
-
*/
|
|
59
|
-
onShutdown(callback: () => void | Promise<void>): void;
|
|
60
|
-
/**
|
|
61
|
-
* Manually trigger shutdown state (useful for testing or programmatic shutdown).
|
|
62
|
-
*/
|
|
63
|
-
triggerShutdown(signal?: NodeJS.Signals): void;
|
|
64
|
-
/**
|
|
65
|
-
* Execute all registered shutdown callbacks.
|
|
66
|
-
*/
|
|
67
|
-
private executeShutdownCallbacks;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=shutdown-state.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-state.service.d.ts","sourceRoot":"","sources":["../../../src/services/shutdown-state/shutdown-state.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAU,MAAM,gBAAgB,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBACa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAE3E;;OAEG;IACH,YAAY,IAAI,IAAI;IA0BpB;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,iBAAiB,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI;IAI1C;;OAEG;IACH,oBAAoB,IAAI,IAAI,GAAG,IAAI;IAInC;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAItD;;OAEG;IACH,eAAe,CAAC,MAAM,GAAE,MAAM,CAAC,OAAmB,GAAG,IAAI;IAUzD;;OAEG;YACW,wBAAwB;CAWvC"}
|
|
@@ -1,127 +0,0 @@
|
|
|
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 ShutdownStateService_1;
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.ShutdownStateService = void 0;
|
|
11
|
-
const common_1 = require("@nestjs/common");
|
|
12
|
-
/**
|
|
13
|
-
* ShutdownStateService
|
|
14
|
-
*
|
|
15
|
-
* Tracks whether the application is in the process of shutting down.
|
|
16
|
-
* This is used to prevent cleanup operations (like clearing player data)
|
|
17
|
-
* when sockets disconnect due to server shutdown vs intentional disconnect.
|
|
18
|
-
*
|
|
19
|
-
* IMPORTANT: We use direct process signal handlers (not onApplicationShutdown)
|
|
20
|
-
* because onApplicationShutdown is called AFTER sockets disconnect, which is too late.
|
|
21
|
-
* By registering our own handlers in onModuleInit, we catch the signal BEFORE
|
|
22
|
-
* any cleanup happens.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* @Injectable()
|
|
27
|
-
* export class MyService {
|
|
28
|
-
* constructor(private readonly shutdownState: ShutdownStateService) {}
|
|
29
|
-
*
|
|
30
|
-
* async handleDisconnect(client: Socket) {
|
|
31
|
-
* // Skip cleanup during graceful shutdown
|
|
32
|
-
* if (this.shutdownState.isShuttingDown) {
|
|
33
|
-
* this.logger.warn('Skipping cleanup - server is shutting down');
|
|
34
|
-
* return;
|
|
35
|
-
* }
|
|
36
|
-
*
|
|
37
|
-
* // Normal cleanup logic
|
|
38
|
-
* await this.cleanupUserSession(client);
|
|
39
|
-
* }
|
|
40
|
-
* }
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
let ShutdownStateService = ShutdownStateService_1 = class ShutdownStateService {
|
|
44
|
-
constructor() {
|
|
45
|
-
this.logger = new common_1.Logger(ShutdownStateService_1.name);
|
|
46
|
-
this.shuttingDown = false;
|
|
47
|
-
this.shutdownSignal = null;
|
|
48
|
-
this.shutdownTimestamp = null;
|
|
49
|
-
this.shutdownCallbacks = [];
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Register signal handlers early to catch shutdown before socket disconnects.
|
|
53
|
-
*/
|
|
54
|
-
onModuleInit() {
|
|
55
|
-
// Register handlers for common shutdown signals
|
|
56
|
-
// These run BEFORE NestJS starts its shutdown process
|
|
57
|
-
const signals = ['SIGINT', 'SIGTERM', 'SIGQUIT'];
|
|
58
|
-
for (const signal of signals) {
|
|
59
|
-
process.on(signal, () => {
|
|
60
|
-
if (!this.shuttingDown) {
|
|
61
|
-
this.logger.warn(`Shutdown signal received: ${signal} - Setting shuttingDown flag EARLY`);
|
|
62
|
-
this.shuttingDown = true;
|
|
63
|
-
this.shutdownSignal = signal;
|
|
64
|
-
this.shutdownTimestamp = new Date();
|
|
65
|
-
// Execute registered callbacks
|
|
66
|
-
this.executeShutdownCallbacks();
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
this.logger.log('ShutdownStateService initialized - signal handlers registered');
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Check if the application is currently shutting down.
|
|
74
|
-
*/
|
|
75
|
-
get isShuttingDown() {
|
|
76
|
-
return this.shuttingDown;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Get the signal that triggered shutdown (if any).
|
|
80
|
-
*/
|
|
81
|
-
getShutdownSignal() {
|
|
82
|
-
return this.shutdownSignal;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Get the timestamp when shutdown was initiated.
|
|
86
|
-
*/
|
|
87
|
-
getShutdownTimestamp() {
|
|
88
|
-
return this.shutdownTimestamp;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Register a callback to be executed when shutdown is detected.
|
|
92
|
-
* These callbacks are executed synchronously in order of registration.
|
|
93
|
-
*/
|
|
94
|
-
onShutdown(callback) {
|
|
95
|
-
this.shutdownCallbacks.push(callback);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Manually trigger shutdown state (useful for testing or programmatic shutdown).
|
|
99
|
-
*/
|
|
100
|
-
triggerShutdown(signal = 'SIGTERM') {
|
|
101
|
-
if (!this.shuttingDown) {
|
|
102
|
-
this.logger.warn(`Manual shutdown triggered with signal: ${signal}`);
|
|
103
|
-
this.shuttingDown = true;
|
|
104
|
-
this.shutdownSignal = signal;
|
|
105
|
-
this.shutdownTimestamp = new Date();
|
|
106
|
-
this.executeShutdownCallbacks();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Execute all registered shutdown callbacks.
|
|
111
|
-
*/
|
|
112
|
-
async executeShutdownCallbacks() {
|
|
113
|
-
for (const callback of this.shutdownCallbacks) {
|
|
114
|
-
try {
|
|
115
|
-
await callback();
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
this.logger.error(`Error executing shutdown callback: ${error.message}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
exports.ShutdownStateService = ShutdownStateService;
|
|
124
|
-
exports.ShutdownStateService = ShutdownStateService = ShutdownStateService_1 = __decorate([
|
|
125
|
-
(0, common_1.Injectable)()
|
|
126
|
-
], ShutdownStateService);
|
|
127
|
-
//# sourceMappingURL=shutdown-state.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-state.service.js","sourceRoot":"","sources":["../../../src/services/shutdown-state/shutdown-state.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEI,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAA1B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;QACxD,iBAAY,GAAG,KAAK,CAAC;QACrB,mBAAc,GAA0B,IAAI,CAAC;QAC7C,sBAAiB,GAAgB,IAAI,CAAC;QAC7B,sBAAiB,GAAsC,EAAE,CAAC;IAuF7E,CAAC;IArFC;;OAEG;IACH,YAAY;QACV,gDAAgD;QAChD,sDAAsD;QACtD,MAAM,OAAO,GAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAEnE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,MAAM,oCAAoC,CACxE,CAAC;oBACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;oBAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC;oBAEpC,+BAA+B;oBAC/B,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,QAAoC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAyB,SAAS;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,MAAM,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB;QACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,QAAQ,EAAE,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sCAAuC,KAAe,CAAC,OAAO,EAAE,CACjE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAA;AA5FY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;GACA,oBAAoB,CA4FhC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/spawn-queue/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/spawn-queue/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import Redis from 'ioredis';
|
|
3
|
-
import { IAtomicQueuesModuleConfig } from '../../domain';
|
|
4
|
-
import { WorkerManagerService } from '../worker-manager';
|
|
5
|
-
import { QueueEventsManagerService } from '../queue-events-manager';
|
|
6
|
-
/**
|
|
7
|
-
* Spawn job payload
|
|
8
|
-
*/
|
|
9
|
-
export interface ISpawnJobData {
|
|
10
|
-
entityType: string;
|
|
11
|
-
entityId: string;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Handler callback that the ProcessorDiscoveryService registers
|
|
15
|
-
* to actually create the entity worker on this pod.
|
|
16
|
-
*/
|
|
17
|
-
export type SpawnWorkerHandler = (entityType: string, entityId: string) => Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* SpawnQueueService
|
|
20
|
-
*
|
|
21
|
-
* Replaces the cron-based / service-queue-based worker creation model
|
|
22
|
-
* with a distributed spawn queue.
|
|
23
|
-
*
|
|
24
|
-
* Architecture:
|
|
25
|
-
* - One shared BullMQ queue: `{prefix}-spawn-queue`
|
|
26
|
-
* - EVERY pod runs a BullMQ Worker on this queue (concurrency: 1)
|
|
27
|
-
* - When QueueEventsManager detects a job for an entity with no worker,
|
|
28
|
-
* it enqueues a spawn-worker job here
|
|
29
|
-
* - BullMQ distributes spawn jobs round-robin across pods
|
|
30
|
-
* - Whichever pod picks up the job creates the entity worker locally
|
|
31
|
-
* - Duplicate protection: before creating, check if worker already exists
|
|
32
|
-
* (heartbeat key in Redis). If yes, skip. Race-safe because BullMQ
|
|
33
|
-
* guarantees only ONE worker processes each job.
|
|
34
|
-
*
|
|
35
|
-
* Benefits over the old cron approach:
|
|
36
|
-
* - Workers naturally distribute across all pods
|
|
37
|
-
* - No single leader / no single point of bottleneck
|
|
38
|
-
* - No distributed lock / leader election needed
|
|
39
|
-
* - Reactive (spawn on demand) rather than polling
|
|
40
|
-
*
|
|
41
|
-
* Idle cleanup:
|
|
42
|
-
* - Each pod runs a local interval that checks its OWN workers' idle time
|
|
43
|
-
* - Idle workers are closed directly (no cross-pod signaling needed)
|
|
44
|
-
*/
|
|
45
|
-
export declare class SpawnQueueService implements OnModuleInit, OnModuleDestroy {
|
|
46
|
-
private readonly redis;
|
|
47
|
-
private readonly config;
|
|
48
|
-
private readonly workerManager;
|
|
49
|
-
private readonly logger;
|
|
50
|
-
private readonly keyPrefix;
|
|
51
|
-
private readonly spawnQueueName;
|
|
52
|
-
private spawnQueue;
|
|
53
|
-
private spawnWorker;
|
|
54
|
-
private idleSweepInterval;
|
|
55
|
-
/** Handler registered by ProcessorDiscoveryService */
|
|
56
|
-
private spawnHandler;
|
|
57
|
-
/** Idle timeout per entity type (set by ProcessorDiscovery) */
|
|
58
|
-
private readonly idleTimeouts;
|
|
59
|
-
/** Default idle timeout in seconds */
|
|
60
|
-
private readonly defaultIdleTimeoutSeconds;
|
|
61
|
-
/** Idle sweep interval in ms */
|
|
62
|
-
private readonly idleSweepIntervalMs;
|
|
63
|
-
/** Reference to QueueEventsManager for hot-cache eviction on idle close */
|
|
64
|
-
private queueEventsManager;
|
|
65
|
-
constructor(redis: Redis, config: IAtomicQueuesModuleConfig, workerManager: WorkerManagerService);
|
|
66
|
-
/**
|
|
67
|
-
* Set the QueueEventsManagerService reference for hot-cache eviction.
|
|
68
|
-
* Called by ProcessorDiscoveryService to avoid circular dependency.
|
|
69
|
-
*/
|
|
70
|
-
setQueueEventsManager(manager: QueueEventsManagerService): void;
|
|
71
|
-
/**
|
|
72
|
-
* Register the handler that creates entity workers.
|
|
73
|
-
* Called by ProcessorDiscoveryService during init.
|
|
74
|
-
*/
|
|
75
|
-
registerSpawnHandler(handler: SpawnWorkerHandler): void;
|
|
76
|
-
/**
|
|
77
|
-
* Register idle timeout for an entity type.
|
|
78
|
-
*/
|
|
79
|
-
registerIdleTimeout(entityType: string, timeoutSeconds: number): void;
|
|
80
|
-
/**
|
|
81
|
-
* Initialize: create the spawn queue and start the spawn worker + idle sweep.
|
|
82
|
-
*/
|
|
83
|
-
onModuleInit(): Promise<void>;
|
|
84
|
-
/**
|
|
85
|
-
* Enqueue a spawn-worker request.
|
|
86
|
-
* Called by QueueEventsManager when a job arrives for an entity with no worker.
|
|
87
|
-
*
|
|
88
|
-
* Uses deduplication: jobId = `spawn-{entityType}-{entityId}` so BullMQ
|
|
89
|
-
* will not create a duplicate if one is already queued/active.
|
|
90
|
-
*/
|
|
91
|
-
requestSpawn(entityType: string, entityId: string): Promise<void>;
|
|
92
|
-
/**
|
|
93
|
-
* Handle a spawn job picked up by this pod's worker.
|
|
94
|
-
*/
|
|
95
|
-
private handleSpawnJob;
|
|
96
|
-
/**
|
|
97
|
-
* Direct spawn — bypasses the BullMQ queue entirely.
|
|
98
|
-
* Called by QueueEventsManagerService when it wins the atomic claim
|
|
99
|
-
* and wants to create the worker on this pod immediately.
|
|
100
|
-
*/
|
|
101
|
-
handleSpawnJobDirect(entityType: string, entityId: string): Promise<void>;
|
|
102
|
-
/**
|
|
103
|
-
* Start the local idle sweep interval.
|
|
104
|
-
* Periodically checks all workers on THIS pod and closes idle ones.
|
|
105
|
-
*/
|
|
106
|
-
private startIdleSweep;
|
|
107
|
-
/**
|
|
108
|
-
* Sweep all workers on this pod, close any that are idle.
|
|
109
|
-
*/
|
|
110
|
-
private sweepIdleWorkers;
|
|
111
|
-
/**
|
|
112
|
-
* Extract entity type from worker name.
|
|
113
|
-
* Worker names follow pattern: {entityType}-{entityId}-worker
|
|
114
|
-
* e.g., "candy-abc123-worker" → "candy"
|
|
115
|
-
*/
|
|
116
|
-
private extractEntityTypeFromWorkerName;
|
|
117
|
-
onModuleDestroy(): Promise<void>;
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=spawn-queue.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn-queue.service.d.ts","sourceRoot":"","sources":["../../../src/services/spawn-queue/spawn-queue.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,YAAY,EACZ,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,iBAAkB,YAAW,YAAY,EAAE,eAAe;IAyBtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IA3BhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAA+B;IAExD,sDAAsD;IACtD,OAAO,CAAC,YAAY,CAAmC;IAEvD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAE/D,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAS;IAEnD,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAE7C,2EAA2E;IAC3E,OAAO,CAAC,kBAAkB,CAA0C;gBAGpB,KAAK,EAAE,KAAK,EAEzC,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,oBAAoB;IAQtD;;;OAGG;IACH,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI;IAI/D;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAKvD;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAIrE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CnC;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BvE;;OAEG;YACW,cAAc;IAwB5B;;;;OAIG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/E;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;YACW,gBAAgB;IA+B9B;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IAejC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CAqBvC"}
|