atomic-queues 2.3.0 → 3.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 +297 -382
- package/dist/cli/generators/classes.d.ts +1 -1
- package/dist/cli/generators/json-schema.d.ts +1 -1
- package/dist/cli/generators/typescript.d.ts +1 -1
- package/dist/cli/index.js +147 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cluster/cluster-discovery.service.d.ts +91 -0
- package/dist/cluster/cluster-discovery.service.d.ts.map +1 -0
- package/dist/cluster/cluster-discovery.service.js +423 -0
- package/dist/cluster/cluster-discovery.service.js.map +1 -0
- package/dist/cluster/grpc-peer-monitor.service.d.ts +31 -0
- package/dist/cluster/grpc-peer-monitor.service.d.ts.map +1 -0
- package/dist/cluster/grpc-peer-monitor.service.js +192 -0
- package/dist/cluster/grpc-peer-monitor.service.js.map +1 -0
- package/dist/cluster/index.d.ts +7 -0
- package/dist/cluster/index.d.ts.map +1 -0
- package/dist/cluster/index.js +23 -0
- package/dist/cluster/index.js.map +1 -0
- package/dist/cluster/leader-election.service.d.ts +38 -0
- package/dist/cluster/leader-election.service.d.ts.map +1 -0
- package/dist/cluster/leader-election.service.js +184 -0
- package/dist/cluster/leader-election.service.js.map +1 -0
- package/dist/cluster/master-coordinator.d.ts +50 -0
- package/dist/cluster/master-coordinator.d.ts.map +1 -0
- package/dist/cluster/master-coordinator.js +307 -0
- package/dist/cluster/master-coordinator.js.map +1 -0
- package/dist/cluster/redis-health-monitor.service.d.ts +23 -0
- package/dist/cluster/redis-health-monitor.service.d.ts.map +1 -0
- package/dist/cluster/redis-health-monitor.service.js +100 -0
- package/dist/cluster/redis-health-monitor.service.js.map +1 -0
- package/dist/cluster/server-ring.service.d.ts +48 -0
- package/dist/cluster/server-ring.service.d.ts.map +1 -0
- package/dist/cluster/server-ring.service.js +136 -0
- package/dist/cluster/server-ring.service.js.map +1 -0
- package/dist/decorators/entity.decorators.d.ts +16 -24
- package/dist/decorators/entity.decorators.d.ts.map +1 -1
- package/dist/decorators/entity.decorators.js +0 -39
- package/dist/decorators/entity.decorators.js.map +1 -1
- package/dist/decorators/interfaces.d.ts +10 -10
- package/dist/decorators/interfaces.d.ts.map +1 -1
- package/dist/decorators/job.decorators.d.ts +4 -52
- package/dist/decorators/job.decorators.d.ts.map +1 -1
- package/dist/decorators/job.decorators.js +6 -54
- package/dist/decorators/job.decorators.js.map +1 -1
- package/dist/decorators/metadata-readers.d.ts +4 -2
- package/dist/decorators/metadata-readers.d.ts.map +1 -1
- package/dist/decorators/metadata-readers.js +2 -0
- package/dist/decorators/metadata-readers.js.map +1 -1
- package/dist/decorators/schema.decorators.d.ts +1 -1
- package/dist/decorators/schema.decorators.d.ts.map +1 -1
- package/dist/decorators/schema.decorators.js.map +1 -1
- package/dist/decorators/utils.d.ts +1 -1
- package/dist/decorators/utils.d.ts.map +1 -1
- package/dist/decorators/utils.js +5 -1
- package/dist/decorators/utils.js.map +1 -1
- package/dist/domain/interfaces/config.interfaces.d.ts +92 -29
- package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -1
- package/dist/domain/interfaces/index.d.ts +1 -0
- package/dist/domain/interfaces/index.d.ts.map +1 -1
- package/dist/domain/interfaces/index.js +1 -0
- package/dist/domain/interfaces/index.js.map +1 -1
- package/dist/{services/registry → domain/interfaces}/registry.types.d.ts.map +1 -1
- package/dist/domain/interfaces/registry.types.js.map +1 -0
- package/dist/grpc/grpc-client-pool.service.d.ts +71 -0
- package/dist/grpc/grpc-client-pool.service.d.ts.map +1 -0
- package/dist/grpc/grpc-client-pool.service.js +307 -0
- package/dist/grpc/grpc-client-pool.service.js.map +1 -0
- package/dist/grpc/grpc-server.service.d.ts +47 -0
- package/dist/grpc/grpc-server.service.d.ts.map +1 -0
- package/dist/grpc/grpc-server.service.js +494 -0
- package/dist/grpc/grpc-server.service.js.map +1 -0
- package/dist/grpc/index.d.ts +3 -0
- package/dist/grpc/index.d.ts.map +1 -0
- package/dist/{services/executor-pool → grpc}/index.js +2 -1
- package/dist/grpc/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/module/atomic-queues.module.d.ts +1 -0
- package/dist/module/atomic-queues.module.d.ts.map +1 -1
- package/dist/module/atomic-queues.module.js +59 -10
- package/dist/module/atomic-queues.module.js.map +1 -1
- package/dist/services/command-discovery/command-discovery.service.js +2 -2
- package/dist/services/command-discovery/command-discovery.service.js.map +1 -1
- package/dist/services/index.d.ts +2 -8
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -8
- package/dist/services/index.js.map +1 -1
- package/dist/services/message-router/index.d.ts +2 -0
- package/dist/services/message-router/index.d.ts.map +1 -0
- package/dist/services/{actor-system → message-router}/index.js +1 -1
- package/dist/services/message-router/index.js.map +1 -0
- package/dist/services/message-router/message-router.service.d.ts +53 -0
- package/dist/services/message-router/message-router.service.d.ts.map +1 -0
- package/dist/services/message-router/message-router.service.js +519 -0
- package/dist/services/message-router/message-router.service.js.map +1 -0
- package/dist/services/queue-bus/cluster-contracts.d.ts +1 -1
- package/dist/services/queue-bus/cluster-contracts.d.ts.map +1 -1
- package/dist/services/queue-bus/cluster-contracts.js.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.d.ts +3 -21
- package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.js +15 -119
- package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
- package/dist/utils/id.utils.d.ts +3 -0
- package/dist/utils/id.utils.d.ts.map +1 -0
- package/dist/utils/id.utils.js +14 -0
- package/dist/utils/id.utils.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/wal/index.d.ts +4 -0
- package/dist/wal/index.d.ts.map +1 -0
- package/dist/{services/gate → wal}/index.js +3 -1
- package/dist/wal/index.js.map +1 -0
- package/dist/wal/wal.scripts.d.ts +51 -0
- package/dist/wal/wal.scripts.d.ts.map +1 -0
- package/dist/wal/wal.scripts.js +84 -0
- package/dist/wal/wal.scripts.js.map +1 -0
- package/dist/wal/wal.service.d.ts +46 -0
- package/dist/wal/wal.service.d.ts.map +1 -0
- package/dist/wal/wal.service.js +243 -0
- package/dist/wal/wal.service.js.map +1 -0
- package/dist/wal/wal.types.d.ts +23 -0
- package/dist/wal/wal.types.d.ts.map +1 -0
- package/dist/wal/wal.types.js +3 -0
- package/dist/wal/wal.types.js.map +1 -0
- package/dist/workers/consistent-hash.d.ts +97 -0
- package/dist/workers/consistent-hash.d.ts.map +1 -0
- package/dist/workers/consistent-hash.js +231 -0
- package/dist/workers/consistent-hash.js.map +1 -0
- package/dist/workers/entity-worker-manager.d.ts +35 -0
- package/dist/workers/entity-worker-manager.d.ts.map +1 -0
- package/dist/workers/entity-worker-manager.js +237 -0
- package/dist/workers/entity-worker-manager.js.map +1 -0
- package/dist/workers/entity-worker.d.ts +54 -0
- package/dist/workers/entity-worker.d.ts.map +1 -0
- package/dist/workers/entity-worker.js +142 -0
- package/dist/workers/entity-worker.js.map +1 -0
- package/dist/workers/index.d.ts +4 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/{services/log → workers}/index.js +3 -1
- package/dist/workers/index.js.map +1 -0
- package/package.json +17 -4
- package/dist/services/actor-system/actor-system.service.d.ts +0 -19
- package/dist/services/actor-system/actor-system.service.d.ts.map +0 -1
- package/dist/services/actor-system/actor-system.service.js +0 -86
- package/dist/services/actor-system/actor-system.service.js.map +0 -1
- package/dist/services/actor-system/index.d.ts +0 -2
- package/dist/services/actor-system/index.d.ts.map +0 -1
- package/dist/services/actor-system/index.js.map +0 -1
- package/dist/services/executor-pool/executor-pool.service.d.ts +0 -38
- package/dist/services/executor-pool/executor-pool.service.d.ts.map +0 -1
- package/dist/services/executor-pool/executor-pool.service.js +0 -166
- package/dist/services/executor-pool/executor-pool.service.js.map +0 -1
- package/dist/services/executor-pool/index.d.ts +0 -2
- package/dist/services/executor-pool/index.d.ts.map +0 -1
- package/dist/services/executor-pool/index.js.map +0 -1
- package/dist/services/gate/gate.service.d.ts +0 -17
- package/dist/services/gate/gate.service.d.ts.map +0 -1
- package/dist/services/gate/gate.service.js +0 -81
- package/dist/services/gate/gate.service.js.map +0 -1
- package/dist/services/gate/index.d.ts +0 -2
- package/dist/services/gate/index.d.ts.map +0 -1
- package/dist/services/gate/index.js.map +0 -1
- package/dist/services/log/index.d.ts +0 -2
- package/dist/services/log/index.d.ts.map +0 -1
- package/dist/services/log/index.js.map +0 -1
- package/dist/services/log/log.service.d.ts +0 -21
- package/dist/services/log/log.service.d.ts.map +0 -1
- package/dist/services/log/log.service.js +0 -92
- package/dist/services/log/log.service.js.map +0 -1
- package/dist/services/registry/index.d.ts +0 -4
- package/dist/services/registry/index.d.ts.map +0 -1
- package/dist/services/registry/index.js +0 -20
- package/dist/services/registry/index.js.map +0 -1
- package/dist/services/registry/registry.service.d.ts +0 -43
- package/dist/services/registry/registry.service.d.ts.map +0 -1
- package/dist/services/registry/registry.service.js +0 -367
- package/dist/services/registry/registry.service.js.map +0 -1
- package/dist/services/registry/registry.types.js.map +0 -1
- package/dist/services/registry/schema-converter.d.ts +0 -2
- package/dist/services/registry/schema-converter.d.ts.map +0 -1
- package/dist/services/registry/schema-converter.js +0 -27
- package/dist/services/registry/schema-converter.js.map +0 -1
- package/dist/services/result-collector/index.d.ts +0 -2
- package/dist/services/result-collector/index.d.ts.map +0 -1
- package/dist/services/result-collector/index.js +0 -18
- package/dist/services/result-collector/index.js.map +0 -1
- package/dist/services/result-collector/result-collector.service.d.ts +0 -17
- package/dist/services/result-collector/result-collector.service.d.ts.map +0 -1
- package/dist/services/result-collector/result-collector.service.js +0 -92
- package/dist/services/result-collector/result-collector.service.js.map +0 -1
- package/dist/services/scheduler/index.d.ts +0 -2
- package/dist/services/scheduler/index.d.ts.map +0 -1
- package/dist/services/scheduler/index.js +0 -18
- package/dist/services/scheduler/index.js.map +0 -1
- package/dist/services/scheduler/scheduler.service.d.ts +0 -17
- package/dist/services/scheduler/scheduler.service.d.ts.map +0 -1
- package/dist/services/scheduler/scheduler.service.js +0 -140
- package/dist/services/scheduler/scheduler.service.js.map +0 -1
- /package/dist/{services/registry → domain/interfaces}/registry.types.d.ts +0 -0
- /package/dist/{services/registry → domain/interfaces}/registry.types.js +0 -0
|
@@ -5,44 +5,14 @@ exports.JobQuery = JobQuery;
|
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
7
|
/**
|
|
8
|
-
* @
|
|
9
|
-
*
|
|
10
|
-
* Marks a command class for automatic job routing. When a job with the
|
|
11
|
-
* specified name arrives, the library will automatically instantiate
|
|
12
|
-
* the command with entityId + job.data and execute it via CommandBus.
|
|
13
|
-
*
|
|
14
|
-
* This eliminates the need for @JobHandler boilerplate in processors.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* // Option 1: Explicit job name
|
|
19
|
-
* @JobCommand('make-bet')
|
|
20
|
-
* export class MakeBetCommand {
|
|
21
|
-
* constructor(
|
|
22
|
-
* public readonly tableId: string, // entityId (first param)
|
|
23
|
-
* public readonly playerId: string,
|
|
24
|
-
* public readonly amount: number,
|
|
25
|
-
* ) {}
|
|
26
|
-
* }
|
|
27
|
-
*
|
|
28
|
-
* // Option 2: Auto-derived job name (MakeBetCommand -> 'make-bet')
|
|
29
|
-
* @JobCommand()
|
|
30
|
-
* export class MakeBetCommand { ... }
|
|
31
|
-
*
|
|
32
|
-
* // Option 3: With options
|
|
33
|
-
* @JobCommand({
|
|
34
|
-
* name: 'place-bet',
|
|
35
|
-
* entityType: 'table',
|
|
36
|
-
* entityIdParam: 'tableId', // or 0 for first param
|
|
37
|
-
* })
|
|
38
|
-
* export class PlaceBetCommand { ... }
|
|
39
|
-
* ```
|
|
8
|
+
* @deprecated Use `@EntityType` + `@QueueEntityId` (or `@QueueEntity`) with standard `@nestjs/cqrs`
|
|
9
|
+
* `@CommandHandler` instead. This decorator will be removed in a future major version.
|
|
40
10
|
*/
|
|
41
11
|
function JobCommand(options) {
|
|
42
12
|
return (target) => {
|
|
43
13
|
const opts = typeof options === 'string' ? { name: options } : options || {};
|
|
44
14
|
const jobName = opts.name || (0, utils_1.deriveJobName)(target.name, 'Command');
|
|
45
|
-
const paramNames = (0, utils_1.getConstructorParamNames)(target);
|
|
15
|
+
const paramNames = opts.params ?? (0, utils_1.getConstructorParamNames)(target);
|
|
46
16
|
const metadata = {
|
|
47
17
|
jobName,
|
|
48
18
|
entityType: opts.entityType,
|
|
@@ -54,32 +24,14 @@ function JobCommand(options) {
|
|
|
54
24
|
};
|
|
55
25
|
}
|
|
56
26
|
/**
|
|
57
|
-
* @
|
|
58
|
-
*
|
|
59
|
-
* Marks a query class for automatic job routing. When a job with the
|
|
60
|
-
* specified name arrives, the library will automatically instantiate
|
|
61
|
-
* the query with entityId + job.data and execute it via QueryBus.
|
|
62
|
-
*
|
|
63
|
-
* @example
|
|
64
|
-
* ```typescript
|
|
65
|
-
* @JobQuery('get-score')
|
|
66
|
-
* export class GetScoreQuery {
|
|
67
|
-
* constructor(
|
|
68
|
-
* public readonly tableId: string,
|
|
69
|
-
* public readonly seatIndex: number,
|
|
70
|
-
* ) {}
|
|
71
|
-
* }
|
|
72
|
-
*
|
|
73
|
-
* // Auto-derived: GetTableStateQuery -> 'get-table-state'
|
|
74
|
-
* @JobQuery()
|
|
75
|
-
* export class GetTableStateQuery { ... }
|
|
76
|
-
* ```
|
|
27
|
+
* @deprecated Use `@EntityType` + `@QueueEntityId` (or `@QueueEntity`) with standard `@nestjs/cqrs`
|
|
28
|
+
* `@QueryHandler` instead. This decorator will be removed in a future major version.
|
|
77
29
|
*/
|
|
78
30
|
function JobQuery(options) {
|
|
79
31
|
return (target) => {
|
|
80
32
|
const opts = typeof options === 'string' ? { name: options } : options || {};
|
|
81
33
|
const jobName = opts.name || (0, utils_1.deriveJobName)(target.name, 'Query');
|
|
82
|
-
const paramNames = (0, utils_1.getConstructorParamNames)(target);
|
|
34
|
+
const paramNames = opts.params ?? (0, utils_1.getConstructorParamNames)(target);
|
|
83
35
|
const metadata = {
|
|
84
36
|
jobName,
|
|
85
37
|
entityType: opts.entityType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job.decorators.js","sourceRoot":"","sources":["../../src/decorators/job.decorators.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"job.decorators.js","sourceRoot":"","sources":["../../src/decorators/job.decorators.ts"],"names":[],"mappings":";;AAaA,gCAiBC;AAMD,4BAiBC;AArDD,2CAAuE;AAOvE,mCAAkE;AAElE;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAAoC;IAC7D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAsB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAEhG,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAA,qBAAa,EAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,IAAA,gCAAwB,EAAC,MAAM,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAuB;YACnC,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;YACtC,WAAW,EAAE,MAAM;YACnB,UAAU;SACX,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,gCAAoB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,OAAkC;IACzD,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAoB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAE9F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAA,qBAAa,EAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,IAAA,gCAAwB,EAAC,MAAM,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAqB;YACjC,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;YACtC,WAAW,EAAE,MAAM;YACnB,UAAU;SACX,CAAC;QAEF,OAAO,CAAC,cAAc,CAAC,8BAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { JobCommandMetadata, JobQueryMetadata } from './interfaces';
|
|
2
2
|
export declare function getEntityType(target: Function): string | undefined;
|
|
3
3
|
export declare function getEntityIdProperty(target: Function): string | undefined;
|
|
4
|
+
/** @deprecated Part of the deprecated `@JobCommand` API. */
|
|
4
5
|
export declare function getJobCommandMetadata(target: Function): JobCommandMetadata | undefined;
|
|
6
|
+
/** @deprecated Part of the deprecated `@JobQuery` API. */
|
|
5
7
|
export declare function getJobQueryMetadata(target: Function): JobQueryMetadata | undefined;
|
|
6
|
-
export declare function getSchemaMetadata(target: Function):
|
|
7
|
-
export declare function getReplySchemaMetadata(target: Function):
|
|
8
|
+
export declare function getSchemaMetadata(target: Function): unknown | undefined;
|
|
9
|
+
export declare function getReplySchemaMetadata(target: Function): unknown | undefined;
|
|
8
10
|
//# sourceMappingURL=metadata-readers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-readers.d.ts","sourceRoot":"","sources":["../../src/decorators/metadata-readers.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAExE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,kBAAkB,GAAG,SAAS,CAEtF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAElF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"metadata-readers.d.ts","sourceRoot":"","sources":["../../src/decorators/metadata-readers.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEpE,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAExE;AAED,4DAA4D;AAC5D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,kBAAkB,GAAG,SAAS,CAEtF;AAED,0DAA0D;AAC1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAElF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAE5E"}
|
|
@@ -13,9 +13,11 @@ function getEntityType(target) {
|
|
|
13
13
|
function getEntityIdProperty(target) {
|
|
14
14
|
return Reflect.getMetadata(constants_1.ENTITY_ID_METADATA, target);
|
|
15
15
|
}
|
|
16
|
+
/** @deprecated Part of the deprecated `@JobCommand` API. */
|
|
16
17
|
function getJobCommandMetadata(target) {
|
|
17
18
|
return Reflect.getMetadata(constants_1.JOB_COMMAND_METADATA, target);
|
|
18
19
|
}
|
|
20
|
+
/** @deprecated Part of the deprecated `@JobQuery` API. */
|
|
19
21
|
function getJobQueryMetadata(target) {
|
|
20
22
|
return Reflect.getMetadata(constants_1.JOB_QUERY_METADATA, target);
|
|
21
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-readers.js","sourceRoot":"","sources":["../../src/decorators/metadata-readers.ts"],"names":[],"mappings":";;AAUA,sCAEC;AAED,kDAEC;
|
|
1
|
+
{"version":3,"file":"metadata-readers.js","sourceRoot":"","sources":["../../src/decorators/metadata-readers.ts"],"names":[],"mappings":";;AAUA,sCAEC;AAED,kDAEC;AAGD,sDAEC;AAGD,kDAEC;AAED,8CAEC;AAED,wDAEC;AAlCD,2CAOqB;AAGrB,SAAgB,aAAa,CAAC,MAAgB;IAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,gCAAoB,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAgB;IAClD,OAAO,OAAO,CAAC,WAAW,CAAC,8BAAkB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,4DAA4D;AAC5D,SAAgB,qBAAqB,CAAC,MAAgB;IACpD,OAAO,OAAO,CAAC,WAAW,CAAC,gCAAoB,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,0DAA0D;AAC1D,SAAgB,mBAAmB,CAAC,MAAgB;IAClD,OAAO,OAAO,CAAC,WAAW,CAAC,8BAAkB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,2BAAe,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,sBAAsB,CAAC,MAAgB;IACrD,OAAO,OAAO,CAAC,WAAW,CAAC,iCAAqB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function Schema(zodSchema:
|
|
1
|
+
export declare function Schema(zodSchema: unknown, replySchema?: unknown): ClassDecorator;
|
|
2
2
|
//# sourceMappingURL=schema.decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.decorators.d.ts","sourceRoot":"","sources":["../../src/decorators/schema.decorators.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.decorators.d.ts","sourceRoot":"","sources":["../../src/decorators/schema.decorators.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,cAAc,CAOhF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.decorators.js","sourceRoot":"","sources":["../../src/decorators/schema.decorators.ts"],"names":[],"mappings":";;AAEA,wBAOC;AATD,2CAAqE;AAErE,SAAgB,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.decorators.js","sourceRoot":"","sources":["../../src/decorators/schema.decorators.ts"],"names":[],"mappings":";;AAEA,wBAOC;AATD,2CAAqE;AAErE,SAAgB,MAAM,CAAC,SAAkB,EAAE,WAAqB;IAC9D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,2BAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,cAAc,CAAC,iCAAqB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -9,7 +9,7 @@ export declare function getConstructorParamName(constructor: Function, index: nu
|
|
|
9
9
|
export declare function splitParams(paramsStr: string): string[];
|
|
10
10
|
/**
|
|
11
11
|
* Helper to convert class name to kebab-case job name
|
|
12
|
-
*
|
|
12
|
+
* PlaceOrderCommand -> place-order
|
|
13
13
|
* ProcessPaymentCommand -> process-payment
|
|
14
14
|
*/
|
|
15
15
|
export declare function deriveJobName(className: string, suffix: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/decorators/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuBhG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/decorators/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuBhG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAuBnE"}
|
package/dist/decorators/utils.js
CHANGED
|
@@ -61,7 +61,7 @@ function splitParams(paramsStr) {
|
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Helper to convert class name to kebab-case job name
|
|
64
|
-
*
|
|
64
|
+
* PlaceOrderCommand -> place-order
|
|
65
65
|
* ProcessPaymentCommand -> process-payment
|
|
66
66
|
*/
|
|
67
67
|
function deriveJobName(className, suffix) {
|
|
@@ -88,6 +88,10 @@ function getConstructorParamNames(target) {
|
|
|
88
88
|
if (name)
|
|
89
89
|
names.push(name);
|
|
90
90
|
}
|
|
91
|
+
if (names.length > 1 && names.every((n) => n.length <= 2)) {
|
|
92
|
+
throw new Error(`Constructor parameter names for ${target.name} appear minified (${names.join(', ')}). ` +
|
|
93
|
+
`Ensure constructor parameter names are not minified.`);
|
|
94
|
+
}
|
|
91
95
|
return names;
|
|
92
96
|
}
|
|
93
97
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/decorators/utils.ts"],"names":[],"mappings":";;AAIA,0DAuBC;AAKD,kCAyBC;AAOD,sCAKC;AAMD,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/decorators/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export interface IRedisConfig {
|
|
|
13
13
|
* Retry policy configuration
|
|
14
14
|
*/
|
|
15
15
|
export interface IRetryPolicy {
|
|
16
|
-
/** Maximum number of attempts (default:
|
|
16
|
+
/** Maximum number of attempts (default: 1 — strictly once) */
|
|
17
17
|
maxAttempts?: number;
|
|
18
18
|
/** Backoff strategy */
|
|
19
19
|
backoff?: 'fixed' | 'exponential';
|
|
@@ -28,57 +28,120 @@ export interface IRetryPolicy {
|
|
|
28
28
|
export interface IEntityConfig {
|
|
29
29
|
/** Default property name for entity ID extraction */
|
|
30
30
|
defaultEntityId?: string;
|
|
31
|
-
/** Gate TTL in seconds (default: 30) */
|
|
32
|
-
gateTTL?: number;
|
|
33
31
|
/** Retry policy for this entity type */
|
|
34
32
|
retry?: IRetryPolicy;
|
|
35
33
|
/** Default timeout in ms for enqueueAndWait on this entity type */
|
|
36
34
|
replyTimeout?: number;
|
|
35
|
+
/** Behavior when a message is found in "dispatched" state on recovery */
|
|
36
|
+
onInterrupt?: 'dead-letter' | 'retry';
|
|
37
|
+
/** Idle timeout in ms before worker teardown (default: 30000) */
|
|
38
|
+
workerIdleTimeout?: number;
|
|
39
|
+
/** Max pending messages per entity worker (0 = unbounded, default: 0) */
|
|
40
|
+
workerMaxQueueDepth?: number;
|
|
37
41
|
}
|
|
38
42
|
/**
|
|
39
|
-
*
|
|
43
|
+
* gRPC RPC deadline configuration (all values in milliseconds)
|
|
40
44
|
*/
|
|
41
|
-
export interface
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
|
|
45
|
+
export interface IGrpcDeadlines {
|
|
46
|
+
/** Deadline for fire-and-forget RPCs: forward(), petition(), enqueueToWorker() (default: 1500) */
|
|
47
|
+
forwardMs?: number;
|
|
48
|
+
/** Deadline for ping() RPC (default: 1000) */
|
|
49
|
+
pingMs?: number;
|
|
50
|
+
/** Default deadline for AndWait server-side handlers when no per-entity replyTimeout is set (default: 60000) */
|
|
51
|
+
andWaitMs?: number;
|
|
52
|
+
/** Deadline for listWorkers() during master table rebuild (default: 1000) */
|
|
53
|
+
syncMs?: number;
|
|
54
|
+
/** Deadline for peer connectivity watch loop re-arm (default: 30000) */
|
|
55
|
+
connectivityWatchMs?: number;
|
|
50
56
|
}
|
|
51
57
|
/**
|
|
52
|
-
*
|
|
58
|
+
* gRPC inter-server communication configuration
|
|
53
59
|
*/
|
|
54
|
-
export interface
|
|
55
|
-
/** Enable
|
|
60
|
+
export interface IGrpcConfig {
|
|
61
|
+
/** Enable gRPC transport (default: false) */
|
|
56
62
|
enabled?: boolean;
|
|
57
|
-
/**
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
|
|
63
|
+
/** gRPC listen address (default: '0.0.0.0:50051') */
|
|
64
|
+
listenAddress?: string;
|
|
65
|
+
/** Advertised address for other servers (default: os.hostname() + ':50051') */
|
|
66
|
+
advertisedAddress?: string;
|
|
67
|
+
/** Unique server ID (default: auto-generated UUID) */
|
|
68
|
+
serverId?: string;
|
|
69
|
+
/** Replica group name — identifies which replicas run the same code */
|
|
70
|
+
serviceGroup?: string;
|
|
71
|
+
/** TLS configuration */
|
|
72
|
+
tls?: {
|
|
73
|
+
certPath: string;
|
|
74
|
+
keyPath: string;
|
|
75
|
+
caPath?: string;
|
|
76
|
+
};
|
|
77
|
+
/** Max forwarding hops to prevent loops (default: 3) */
|
|
78
|
+
maxForwardHops?: number;
|
|
79
|
+
/** Heartbeat interval in ms (default: 400) */
|
|
80
|
+
heartbeatMs?: number;
|
|
81
|
+
/** Node considered dead after this many ms without heartbeat (default: 1500) */
|
|
82
|
+
nodeTTLMs?: number;
|
|
83
|
+
/** Leader lock TTL in ms (default: 2000) */
|
|
84
|
+
leaderTTLMs?: number;
|
|
85
|
+
/** Leader lock renewal interval in ms (default: 400) */
|
|
86
|
+
leaderRenewalMs?: number;
|
|
87
|
+
/** Leader acquisition poll interval in ms (default: 400) */
|
|
88
|
+
leaderAcquisitionMs?: number;
|
|
89
|
+
/** gRPC keepalive ping interval in ms (default: 10000, minimum enforced by grpc-js) */
|
|
90
|
+
keepaliveTimeMs?: number;
|
|
91
|
+
/** gRPC keepalive timeout in ms — connection dead if no response (default: 5000) */
|
|
92
|
+
keepaliveTimeoutMs?: number;
|
|
93
|
+
/** Enable gRPC peer connectivity monitoring for fast failure detection (default: true when grpc.enabled) */
|
|
94
|
+
peerMonitorEnabled?: boolean;
|
|
95
|
+
/** Debounce window in ms before declaring a peer suspected-dead (default: 500) */
|
|
96
|
+
peerSuspectDebounceMs?: number;
|
|
97
|
+
/** Redis PING health check interval in ms (default: 500) */
|
|
98
|
+
redisHealthCheckMs?: number;
|
|
99
|
+
/** Consecutive Redis PING failures before declaring degraded mode (default: 3) */
|
|
100
|
+
redisHealthFailureThreshold?: number;
|
|
101
|
+
/** Reconciliation interval in ms — how often to SCAN Redis for node changes (default: 2000) */
|
|
102
|
+
reconcileIntervalMs?: number;
|
|
103
|
+
/** Max concurrent petitions the master will process (default: 50, 0 = unbounded) */
|
|
104
|
+
maxConcurrentPetitions?: number;
|
|
105
|
+
/** Debounce window in ms for leader recomputation after ring changes (default: 800) */
|
|
106
|
+
leaderDebounceMs?: number;
|
|
107
|
+
/** RPC deadline overrides */
|
|
108
|
+
deadlines?: IGrpcDeadlines;
|
|
109
|
+
/** Circuit breaker: consecutive failures before opening circuit (default: 3) */
|
|
110
|
+
circuitBreakerFailureThreshold?: number;
|
|
111
|
+
/** Circuit breaker: cooldown in ms before half-open probe (default: 2000) */
|
|
112
|
+
circuitBreakerCooldownMs?: number;
|
|
65
113
|
}
|
|
66
114
|
/**
|
|
67
|
-
*
|
|
115
|
+
* Write-ahead log configuration
|
|
116
|
+
*/
|
|
117
|
+
export interface IWalConfig {
|
|
118
|
+
/** Enable WAL persistence (default: true) */
|
|
119
|
+
enabled?: boolean;
|
|
120
|
+
/** Cleanup batch interval in ms (default: 5000) */
|
|
121
|
+
cleanupInterval?: number;
|
|
122
|
+
/** Safety TTL for WAL entries in seconds (default: 86400 = 24h) */
|
|
123
|
+
entryTTL?: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Main module configuration — v3
|
|
68
127
|
*/
|
|
69
128
|
export interface IAtomicQueuesModuleConfig {
|
|
70
129
|
/** Redis connection configuration */
|
|
71
130
|
redis: IRedisConfig;
|
|
72
|
-
/** Executor pool configuration */
|
|
73
|
-
executor?: IExecutorConfig;
|
|
74
131
|
/** Default retry policy */
|
|
75
132
|
retry?: IRetryPolicy;
|
|
76
133
|
/** Per-entity-type overrides */
|
|
77
134
|
entities?: Record<string, IEntityConfig>;
|
|
78
|
-
/**
|
|
79
|
-
|
|
135
|
+
/** gRPC inter-server communication */
|
|
136
|
+
grpc?: IGrpcConfig;
|
|
137
|
+
/** Write-ahead log persistence */
|
|
138
|
+
wal?: IWalConfig;
|
|
80
139
|
/** Prefix for all Redis keys (default: 'aq') */
|
|
81
140
|
keyPrefix?: string;
|
|
141
|
+
/** Maximum total active workers across all entity types (default: 10000, 0 = unbounded) */
|
|
142
|
+
maxTotalWorkers?: number;
|
|
143
|
+
/** Maximum total queued messages across all workers (default: 100000, 0 = unbounded) */
|
|
144
|
+
maxTotalQueueDepth?: number;
|
|
82
145
|
/** Enable verbose logging */
|
|
83
146
|
verbose?: boolean;
|
|
84
147
|
/** Auto-register commands from @nestjs/cqrs handlers (default: true) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.interfaces.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/config.interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"config.interfaces.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/config.interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
|
|
@@ -19,4 +19,5 @@ __exportStar(require("./job.interfaces"), exports);
|
|
|
19
19
|
__exportStar(require("./cqrs.interfaces"), exports);
|
|
20
20
|
__exportStar(require("./utility.types"), exports);
|
|
21
21
|
__exportStar(require("./reply.types"), exports);
|
|
22
|
+
__exportStar(require("./registry.types"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC;AAChC,gDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,mDAAiC;AACjC,oDAAkC;AAClC,kDAAgC;AAChC,gDAA8B;AAC9B,mDAAiC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.types.d.ts","sourceRoot":"","sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"registry.types.d.ts","sourceRoot":"","sources":["../../../src/domain/interfaces/registry.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.types.js","sourceRoot":"","sources":["../../../src/domain/interfaces/registry.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { OnModuleInit, OnApplicationShutdown } from '@nestjs/common';
|
|
2
|
+
import { IAtomicQueuesModuleConfig, ISerializedMessage, IMessageRef } from '../domain';
|
|
3
|
+
/** Minimal shape of a gRPC client instance (from @grpc/grpc-js). */
|
|
4
|
+
interface GrpcCallOptions {
|
|
5
|
+
deadline?: Date;
|
|
6
|
+
}
|
|
7
|
+
interface GrpcClientInstance {
|
|
8
|
+
forward(envelope: Record<string, unknown>, options: GrpcCallOptions, callback: (err: Error | null, response: Record<string, unknown>) => void): void;
|
|
9
|
+
forwardAndWait(envelope: Record<string, unknown>): GrpcClientStream;
|
|
10
|
+
ping(request: Record<string, unknown>, options: GrpcCallOptions, callback: (err: Error | null, response: Record<string, unknown>) => void): void;
|
|
11
|
+
close(): void;
|
|
12
|
+
}
|
|
13
|
+
/** Minimal shape of a gRPC readable stream (from @grpc/grpc-js). */
|
|
14
|
+
interface GrpcClientStream {
|
|
15
|
+
on(event: 'data', listener: (response: Record<string, unknown>) => void): void;
|
|
16
|
+
on(event: 'error', listener: (err: Error) => void): void;
|
|
17
|
+
on(event: 'end', listener: () => void): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* gRPC Client Pool — maintains connections to peer servers.
|
|
21
|
+
*
|
|
22
|
+
* Provides `forward()` and `forwardAndWait()` methods that the
|
|
23
|
+
* MessageRouter calls when an entity is owned by a remote server.
|
|
24
|
+
*/
|
|
25
|
+
export declare class GrpcClientPool implements OnModuleInit, OnApplicationShutdown {
|
|
26
|
+
private readonly config;
|
|
27
|
+
private readonly logger;
|
|
28
|
+
private readonly clients;
|
|
29
|
+
private readonly circuitBreakers;
|
|
30
|
+
private readonly failureThreshold;
|
|
31
|
+
private readonly cooldownMs;
|
|
32
|
+
private grpcModule;
|
|
33
|
+
private protoDescriptor;
|
|
34
|
+
constructor(config: IAtomicQueuesModuleConfig);
|
|
35
|
+
onModuleInit(): Promise<void>;
|
|
36
|
+
onApplicationShutdown(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Ensure the gRPC module is loaded (lazy, for optional dependency).
|
|
39
|
+
*/
|
|
40
|
+
private ensureLoaded;
|
|
41
|
+
/**
|
|
42
|
+
* Get or create a client connection to a peer server.
|
|
43
|
+
*/
|
|
44
|
+
private checkCircuit;
|
|
45
|
+
recordSuccess(serverId: string): void;
|
|
46
|
+
recordFailure(serverId: string): void;
|
|
47
|
+
openCircuit(serverId: string): void;
|
|
48
|
+
closeCircuit(serverId: string): void;
|
|
49
|
+
getClient(serverId: string, address: string): Promise<GrpcClientInstance>;
|
|
50
|
+
/**
|
|
51
|
+
* Forward a message to a remote server (fire-and-forget).
|
|
52
|
+
*/
|
|
53
|
+
forward(serverId: string, address: string, message: ISerializedMessage, originServerId: string, hops: number, senderEpoch?: number): Promise<IMessageRef>;
|
|
54
|
+
/**
|
|
55
|
+
* Forward a message to a remote server and wait for the result.
|
|
56
|
+
*/
|
|
57
|
+
forwardAndWait<R = unknown>(serverId: string, address: string, message: ISerializedMessage, originServerId: string, hops: number, timeout: number, senderEpoch?: number): Promise<R>;
|
|
58
|
+
/**
|
|
59
|
+
* Ping a peer server.
|
|
60
|
+
*/
|
|
61
|
+
ping(serverId: string, address: string): Promise<{
|
|
62
|
+
healthy: boolean;
|
|
63
|
+
queueDepth: number;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* Remove a client connection.
|
|
67
|
+
*/
|
|
68
|
+
removeClient(serverId: string): void;
|
|
69
|
+
}
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=grpc-client-pool.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-client-pool.service.d.ts","sourceRoot":"","sources":["../../src/grpc/grpc-client-pool.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGjG,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGvF,oEAAoE;AACpE,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AACD,UAAU,kBAAkB;IAC1B,OAAO,CACL,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACvE,IAAI,CAAC;IACR,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAAC;IACpE,IAAI,CACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACvE,IAAI,CAAC;IACR,KAAK,IAAI,IAAI,CAAC;CACf;AAED,oEAAoE;AACpE,UAAU,gBAAgB;IACxB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/E,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IACzD,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC9C;AA2CD;;;;;GAKG;AACH,qBACa,cAAe,YAAW,YAAY,EAAE,qBAAqB;IAS9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARjE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0C;IAC1E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAgC;gBAEI,MAAM,EAAE,yBAAyB;IAKtF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5C;;OAEG;YACW,YAAY;IAqB1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQrC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAcrC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUnC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ9B,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4B/E;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAI,GACd,OAAO,CAAC,WAAW,CAAC;IA0CvB;;OAEG;IACG,cAAc,CAAC,CAAC,GAAG,OAAO,EAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,SAAI,GACd,OAAO,CAAC,CAAC,CAAC;IAmDb;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBhG;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAYrC"}
|