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.
Files changed (204) hide show
  1. package/README.md +297 -382
  2. package/dist/cli/generators/classes.d.ts +1 -1
  3. package/dist/cli/generators/json-schema.d.ts +1 -1
  4. package/dist/cli/generators/typescript.d.ts +1 -1
  5. package/dist/cli/index.js +147 -5
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/cluster/cluster-discovery.service.d.ts +91 -0
  8. package/dist/cluster/cluster-discovery.service.d.ts.map +1 -0
  9. package/dist/cluster/cluster-discovery.service.js +423 -0
  10. package/dist/cluster/cluster-discovery.service.js.map +1 -0
  11. package/dist/cluster/grpc-peer-monitor.service.d.ts +31 -0
  12. package/dist/cluster/grpc-peer-monitor.service.d.ts.map +1 -0
  13. package/dist/cluster/grpc-peer-monitor.service.js +192 -0
  14. package/dist/cluster/grpc-peer-monitor.service.js.map +1 -0
  15. package/dist/cluster/index.d.ts +7 -0
  16. package/dist/cluster/index.d.ts.map +1 -0
  17. package/dist/cluster/index.js +23 -0
  18. package/dist/cluster/index.js.map +1 -0
  19. package/dist/cluster/leader-election.service.d.ts +38 -0
  20. package/dist/cluster/leader-election.service.d.ts.map +1 -0
  21. package/dist/cluster/leader-election.service.js +184 -0
  22. package/dist/cluster/leader-election.service.js.map +1 -0
  23. package/dist/cluster/master-coordinator.d.ts +50 -0
  24. package/dist/cluster/master-coordinator.d.ts.map +1 -0
  25. package/dist/cluster/master-coordinator.js +307 -0
  26. package/dist/cluster/master-coordinator.js.map +1 -0
  27. package/dist/cluster/redis-health-monitor.service.d.ts +23 -0
  28. package/dist/cluster/redis-health-monitor.service.d.ts.map +1 -0
  29. package/dist/cluster/redis-health-monitor.service.js +100 -0
  30. package/dist/cluster/redis-health-monitor.service.js.map +1 -0
  31. package/dist/cluster/server-ring.service.d.ts +48 -0
  32. package/dist/cluster/server-ring.service.d.ts.map +1 -0
  33. package/dist/cluster/server-ring.service.js +136 -0
  34. package/dist/cluster/server-ring.service.js.map +1 -0
  35. package/dist/decorators/entity.decorators.d.ts +16 -24
  36. package/dist/decorators/entity.decorators.d.ts.map +1 -1
  37. package/dist/decorators/entity.decorators.js +0 -39
  38. package/dist/decorators/entity.decorators.js.map +1 -1
  39. package/dist/decorators/interfaces.d.ts +10 -10
  40. package/dist/decorators/interfaces.d.ts.map +1 -1
  41. package/dist/decorators/job.decorators.d.ts +4 -52
  42. package/dist/decorators/job.decorators.d.ts.map +1 -1
  43. package/dist/decorators/job.decorators.js +6 -54
  44. package/dist/decorators/job.decorators.js.map +1 -1
  45. package/dist/decorators/metadata-readers.d.ts +4 -2
  46. package/dist/decorators/metadata-readers.d.ts.map +1 -1
  47. package/dist/decorators/metadata-readers.js +2 -0
  48. package/dist/decorators/metadata-readers.js.map +1 -1
  49. package/dist/decorators/schema.decorators.d.ts +1 -1
  50. package/dist/decorators/schema.decorators.d.ts.map +1 -1
  51. package/dist/decorators/schema.decorators.js.map +1 -1
  52. package/dist/decorators/utils.d.ts +1 -1
  53. package/dist/decorators/utils.d.ts.map +1 -1
  54. package/dist/decorators/utils.js +5 -1
  55. package/dist/decorators/utils.js.map +1 -1
  56. package/dist/domain/interfaces/config.interfaces.d.ts +92 -29
  57. package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -1
  58. package/dist/domain/interfaces/index.d.ts +1 -0
  59. package/dist/domain/interfaces/index.d.ts.map +1 -1
  60. package/dist/domain/interfaces/index.js +1 -0
  61. package/dist/domain/interfaces/index.js.map +1 -1
  62. package/dist/{services/registry → domain/interfaces}/registry.types.d.ts.map +1 -1
  63. package/dist/domain/interfaces/registry.types.js.map +1 -0
  64. package/dist/grpc/grpc-client-pool.service.d.ts +71 -0
  65. package/dist/grpc/grpc-client-pool.service.d.ts.map +1 -0
  66. package/dist/grpc/grpc-client-pool.service.js +307 -0
  67. package/dist/grpc/grpc-client-pool.service.js.map +1 -0
  68. package/dist/grpc/grpc-server.service.d.ts +47 -0
  69. package/dist/grpc/grpc-server.service.d.ts.map +1 -0
  70. package/dist/grpc/grpc-server.service.js +494 -0
  71. package/dist/grpc/grpc-server.service.js.map +1 -0
  72. package/dist/grpc/index.d.ts +3 -0
  73. package/dist/grpc/index.d.ts.map +1 -0
  74. package/dist/{services/executor-pool → grpc}/index.js +2 -1
  75. package/dist/grpc/index.js.map +1 -0
  76. package/dist/index.d.ts +4 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +4 -0
  79. package/dist/index.js.map +1 -1
  80. package/dist/module/atomic-queues.module.d.ts +1 -0
  81. package/dist/module/atomic-queues.module.d.ts.map +1 -1
  82. package/dist/module/atomic-queues.module.js +59 -10
  83. package/dist/module/atomic-queues.module.js.map +1 -1
  84. package/dist/services/command-discovery/command-discovery.service.js +2 -2
  85. package/dist/services/command-discovery/command-discovery.service.js.map +1 -1
  86. package/dist/services/index.d.ts +2 -8
  87. package/dist/services/index.d.ts.map +1 -1
  88. package/dist/services/index.js +2 -8
  89. package/dist/services/index.js.map +1 -1
  90. package/dist/services/message-router/index.d.ts +2 -0
  91. package/dist/services/message-router/index.d.ts.map +1 -0
  92. package/dist/services/{actor-system → message-router}/index.js +1 -1
  93. package/dist/services/message-router/index.js.map +1 -0
  94. package/dist/services/message-router/message-router.service.d.ts +53 -0
  95. package/dist/services/message-router/message-router.service.d.ts.map +1 -0
  96. package/dist/services/message-router/message-router.service.js +519 -0
  97. package/dist/services/message-router/message-router.service.js.map +1 -0
  98. package/dist/services/queue-bus/cluster-contracts.d.ts +1 -1
  99. package/dist/services/queue-bus/cluster-contracts.d.ts.map +1 -1
  100. package/dist/services/queue-bus/cluster-contracts.js.map +1 -1
  101. package/dist/services/queue-bus/queue-bus.service.d.ts +3 -21
  102. package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
  103. package/dist/services/queue-bus/queue-bus.service.js +15 -119
  104. package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
  105. package/dist/utils/id.utils.d.ts +3 -0
  106. package/dist/utils/id.utils.d.ts.map +1 -0
  107. package/dist/utils/id.utils.js +14 -0
  108. package/dist/utils/id.utils.js.map +1 -0
  109. package/dist/utils/index.d.ts +1 -0
  110. package/dist/utils/index.d.ts.map +1 -1
  111. package/dist/utils/index.js +1 -0
  112. package/dist/utils/index.js.map +1 -1
  113. package/dist/wal/index.d.ts +4 -0
  114. package/dist/wal/index.d.ts.map +1 -0
  115. package/dist/{services/gate → wal}/index.js +3 -1
  116. package/dist/wal/index.js.map +1 -0
  117. package/dist/wal/wal.scripts.d.ts +51 -0
  118. package/dist/wal/wal.scripts.d.ts.map +1 -0
  119. package/dist/wal/wal.scripts.js +84 -0
  120. package/dist/wal/wal.scripts.js.map +1 -0
  121. package/dist/wal/wal.service.d.ts +46 -0
  122. package/dist/wal/wal.service.d.ts.map +1 -0
  123. package/dist/wal/wal.service.js +243 -0
  124. package/dist/wal/wal.service.js.map +1 -0
  125. package/dist/wal/wal.types.d.ts +23 -0
  126. package/dist/wal/wal.types.d.ts.map +1 -0
  127. package/dist/wal/wal.types.js +3 -0
  128. package/dist/wal/wal.types.js.map +1 -0
  129. package/dist/workers/consistent-hash.d.ts +97 -0
  130. package/dist/workers/consistent-hash.d.ts.map +1 -0
  131. package/dist/workers/consistent-hash.js +231 -0
  132. package/dist/workers/consistent-hash.js.map +1 -0
  133. package/dist/workers/entity-worker-manager.d.ts +35 -0
  134. package/dist/workers/entity-worker-manager.d.ts.map +1 -0
  135. package/dist/workers/entity-worker-manager.js +237 -0
  136. package/dist/workers/entity-worker-manager.js.map +1 -0
  137. package/dist/workers/entity-worker.d.ts +54 -0
  138. package/dist/workers/entity-worker.d.ts.map +1 -0
  139. package/dist/workers/entity-worker.js +142 -0
  140. package/dist/workers/entity-worker.js.map +1 -0
  141. package/dist/workers/index.d.ts +4 -0
  142. package/dist/workers/index.d.ts.map +1 -0
  143. package/dist/{services/log → workers}/index.js +3 -1
  144. package/dist/workers/index.js.map +1 -0
  145. package/package.json +17 -4
  146. package/dist/services/actor-system/actor-system.service.d.ts +0 -19
  147. package/dist/services/actor-system/actor-system.service.d.ts.map +0 -1
  148. package/dist/services/actor-system/actor-system.service.js +0 -86
  149. package/dist/services/actor-system/actor-system.service.js.map +0 -1
  150. package/dist/services/actor-system/index.d.ts +0 -2
  151. package/dist/services/actor-system/index.d.ts.map +0 -1
  152. package/dist/services/actor-system/index.js.map +0 -1
  153. package/dist/services/executor-pool/executor-pool.service.d.ts +0 -38
  154. package/dist/services/executor-pool/executor-pool.service.d.ts.map +0 -1
  155. package/dist/services/executor-pool/executor-pool.service.js +0 -166
  156. package/dist/services/executor-pool/executor-pool.service.js.map +0 -1
  157. package/dist/services/executor-pool/index.d.ts +0 -2
  158. package/dist/services/executor-pool/index.d.ts.map +0 -1
  159. package/dist/services/executor-pool/index.js.map +0 -1
  160. package/dist/services/gate/gate.service.d.ts +0 -17
  161. package/dist/services/gate/gate.service.d.ts.map +0 -1
  162. package/dist/services/gate/gate.service.js +0 -81
  163. package/dist/services/gate/gate.service.js.map +0 -1
  164. package/dist/services/gate/index.d.ts +0 -2
  165. package/dist/services/gate/index.d.ts.map +0 -1
  166. package/dist/services/gate/index.js.map +0 -1
  167. package/dist/services/log/index.d.ts +0 -2
  168. package/dist/services/log/index.d.ts.map +0 -1
  169. package/dist/services/log/index.js.map +0 -1
  170. package/dist/services/log/log.service.d.ts +0 -21
  171. package/dist/services/log/log.service.d.ts.map +0 -1
  172. package/dist/services/log/log.service.js +0 -92
  173. package/dist/services/log/log.service.js.map +0 -1
  174. package/dist/services/registry/index.d.ts +0 -4
  175. package/dist/services/registry/index.d.ts.map +0 -1
  176. package/dist/services/registry/index.js +0 -20
  177. package/dist/services/registry/index.js.map +0 -1
  178. package/dist/services/registry/registry.service.d.ts +0 -43
  179. package/dist/services/registry/registry.service.d.ts.map +0 -1
  180. package/dist/services/registry/registry.service.js +0 -367
  181. package/dist/services/registry/registry.service.js.map +0 -1
  182. package/dist/services/registry/registry.types.js.map +0 -1
  183. package/dist/services/registry/schema-converter.d.ts +0 -2
  184. package/dist/services/registry/schema-converter.d.ts.map +0 -1
  185. package/dist/services/registry/schema-converter.js +0 -27
  186. package/dist/services/registry/schema-converter.js.map +0 -1
  187. package/dist/services/result-collector/index.d.ts +0 -2
  188. package/dist/services/result-collector/index.d.ts.map +0 -1
  189. package/dist/services/result-collector/index.js +0 -18
  190. package/dist/services/result-collector/index.js.map +0 -1
  191. package/dist/services/result-collector/result-collector.service.d.ts +0 -17
  192. package/dist/services/result-collector/result-collector.service.d.ts.map +0 -1
  193. package/dist/services/result-collector/result-collector.service.js +0 -92
  194. package/dist/services/result-collector/result-collector.service.js.map +0 -1
  195. package/dist/services/scheduler/index.d.ts +0 -2
  196. package/dist/services/scheduler/index.d.ts.map +0 -1
  197. package/dist/services/scheduler/index.js +0 -18
  198. package/dist/services/scheduler/index.js.map +0 -1
  199. package/dist/services/scheduler/scheduler.service.d.ts +0 -17
  200. package/dist/services/scheduler/scheduler.service.d.ts.map +0 -1
  201. package/dist/services/scheduler/scheduler.service.js +0 -140
  202. package/dist/services/scheduler/scheduler.service.js.map +0 -1
  203. /package/dist/{services/registry → domain/interfaces}/registry.types.d.ts +0 -0
  204. /package/dist/{services/registry → domain/interfaces}/registry.types.js +0 -0
@@ -0,0 +1,519 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var MessageRouter_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.MessageRouter = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const utils_1 = require("../../utils");
19
+ const workers_1 = require("../../workers");
20
+ const cluster_1 = require("../../cluster");
21
+ const grpc_peer_monitor_service_1 = require("../../cluster/grpc-peer-monitor.service");
22
+ const redis_health_monitor_service_1 = require("../../cluster/redis-health-monitor.service");
23
+ const grpc_1 = require("../../grpc");
24
+ const constants_1 = require("../constants");
25
+ let MessageRouter = MessageRouter_1 = class MessageRouter {
26
+ constructor(config, workerManager, masterCoordinator, grpcClientPool, clusterDiscovery, leaderElection, peerMonitor, redisHealthMonitor) {
27
+ this.config = config;
28
+ this.workerManager = workerManager;
29
+ this.masterCoordinator = masterCoordinator;
30
+ this.grpcClientPool = grpcClientPool;
31
+ this.clusterDiscovery = clusterDiscovery;
32
+ this.leaderElection = leaderElection;
33
+ this.peerMonitor = peerMonitor;
34
+ this.redisHealthMonitor = redisHealthMonitor;
35
+ this.logger = new common_1.Logger(MessageRouter_1.name);
36
+ this.nodeCache = null;
37
+ this.masterCache = null;
38
+ this.assignmentCache = new Map();
39
+ this.unsubscribePeerMonitor = null;
40
+ this.isClusterMode = config.grpc?.enabled ?? false;
41
+ }
42
+ async onModuleInit() {
43
+ if (this.peerMonitor) {
44
+ this.unsubscribePeerMonitor = this.peerMonitor.onPeerStateChange((serverId, state) => {
45
+ if (state === 'suspected-dead') {
46
+ this.invalidateTopologyCache();
47
+ this.grpcClientPool?.openCircuit(serverId);
48
+ }
49
+ else if (state === 'alive') {
50
+ this.grpcClientPool?.closeCircuit(serverId);
51
+ }
52
+ });
53
+ }
54
+ }
55
+ invalidateTopologyCache() {
56
+ this.nodeCache = null;
57
+ this.masterCache = null;
58
+ this.assignmentCache.clear();
59
+ }
60
+ async enqueue(entityType, messageName, entityId, data, options) {
61
+ const entityKey = `${entityType}:${entityId}`;
62
+ const retryConfig = this.config.entities?.[entityType]?.retry ?? this.config.retry;
63
+ const message = {
64
+ id: (0, utils_1.fastId)(),
65
+ name: messageName,
66
+ data,
67
+ entityType,
68
+ entityId,
69
+ isQuery: options?.isQuery,
70
+ correlationId: options?.correlationId,
71
+ enqueuedAt: Date.now(),
72
+ attempts: 0,
73
+ maxAttempts: options?.maxAttempts ?? retryConfig?.maxAttempts ?? 1,
74
+ };
75
+ if (this.isClusterMode) {
76
+ await this.clusterDispatch(entityKey, message);
77
+ }
78
+ else {
79
+ await this.workerManager.enqueue(entityKey, message);
80
+ }
81
+ return { id: message.id, entityKey };
82
+ }
83
+ async enqueueAndWait(entityType, messageName, entityId, data, timeout, options) {
84
+ const entityKey = `${entityType}:${entityId}`;
85
+ const retryConfig = this.config.entities?.[entityType]?.retry ?? this.config.retry;
86
+ const resolvedTimeout = this.resolveTimeout(entityType, timeout);
87
+ const message = {
88
+ id: (0, utils_1.fastId)(),
89
+ name: messageName,
90
+ data,
91
+ entityType,
92
+ entityId,
93
+ isQuery: true,
94
+ enqueuedAt: Date.now(),
95
+ attempts: 0,
96
+ maxAttempts: options?.maxAttempts ?? retryConfig?.maxAttempts ?? 1,
97
+ };
98
+ if (this.isClusterMode) {
99
+ return this.clusterDispatchAndWait(entityKey, message, resolvedTimeout);
100
+ }
101
+ return this.workerManager.enqueueAndWait(entityKey, message, resolvedTimeout);
102
+ }
103
+ // =========================================================================
104
+ // CLUSTER DISPATCH
105
+ // =========================================================================
106
+ async clusterDispatch(entityKey, message) {
107
+ if (this.redisHealthMonitor?.isDegraded) {
108
+ throw new Error('Cluster degraded: Redis unreachable');
109
+ }
110
+ if (!this.masterCoordinator.isMaster()) {
111
+ const cached = this.getAssignmentFromCache(entityKey);
112
+ if (cached) {
113
+ try {
114
+ await this.dispatchViaCachedAssignment(entityKey, message, cached);
115
+ return;
116
+ }
117
+ catch {
118
+ this.assignmentCache.delete(entityKey);
119
+ }
120
+ }
121
+ await this.petitionMaster(entityKey, message);
122
+ return;
123
+ }
124
+ await this.dispatchAsMaster(entityKey, message);
125
+ }
126
+ async clusterDispatchAndWait(entityKey, message, timeout) {
127
+ if (this.redisHealthMonitor?.isDegraded) {
128
+ throw new Error('Cluster degraded: Redis unreachable');
129
+ }
130
+ if (!this.masterCoordinator.isMaster()) {
131
+ const cached = this.getAssignmentFromCache(entityKey);
132
+ if (cached) {
133
+ try {
134
+ return await this.dispatchViaCachedAssignmentAndWait(entityKey, message, timeout, cached);
135
+ }
136
+ catch {
137
+ this.assignmentCache.delete(entityKey);
138
+ }
139
+ }
140
+ return this.petitionMasterAndWait(entityKey, message, timeout);
141
+ }
142
+ return this.dispatchAsMasterAndWait(entityKey, message, timeout);
143
+ }
144
+ // =========================================================================
145
+ // MASTER DISPATCH
146
+ // =========================================================================
147
+ async dispatchAsMaster(entityKey, message) {
148
+ if (!this.isLocalEntityType(message.entityType)) {
149
+ await this.forwardToForeignService(message);
150
+ return;
151
+ }
152
+ const resolution = this.masterCoordinator.resolve(entityKey);
153
+ if (resolution.isLocal) {
154
+ await this.workerManager.enqueue(entityKey, message);
155
+ }
156
+ else {
157
+ await this.forwardToReplica(resolution.replicaId, entityKey, message);
158
+ }
159
+ }
160
+ async dispatchAsMasterAndWait(entityKey, message, timeout) {
161
+ if (!this.isLocalEntityType(message.entityType)) {
162
+ return this.forwardToForeignServiceAndWait(message, timeout);
163
+ }
164
+ const resolution = this.masterCoordinator.resolve(entityKey);
165
+ if (resolution.isLocal) {
166
+ return this.workerManager.enqueueAndWait(entityKey, message, timeout);
167
+ }
168
+ return this.forwardToReplicaAndWait(resolution.replicaId, entityKey, message, timeout);
169
+ }
170
+ isLocalEntityType(entityType) {
171
+ return entityType in (this.config.entities ?? {});
172
+ }
173
+ // =========================================================================
174
+ // gRPC — Replica → Master (Petition) — NO FALLBACK-TO-LOCAL
175
+ // =========================================================================
176
+ async petitionMaster(entityKey, message) {
177
+ await (0, utils_1.retry)(async () => {
178
+ if (this.masterCoordinator.isMaster()) {
179
+ await this.dispatchAsMaster(entityKey, message);
180
+ return;
181
+ }
182
+ const masterAddress = await this.getMasterAddress();
183
+ if (!masterAddress) {
184
+ throw new Error('No master available');
185
+ }
186
+ this.masterCache = null;
187
+ const client = await this.grpcClientPool.getClient('master', masterAddress);
188
+ const deadline = new Date(Date.now() + (this.config.grpc?.deadlines?.forwardMs ?? 1500));
189
+ await new Promise((resolve, reject) => {
190
+ client.petition({
191
+ entityKey,
192
+ message: this.serializeEnvelope(message),
193
+ masterEpoch: this.leaderElection?.epoch ?? 0,
194
+ }, { deadline }, (err, response) => {
195
+ if (err)
196
+ return reject(err);
197
+ if (!response.accepted)
198
+ return reject(new Error(response.rejectReason));
199
+ const assignedReplicaId = response.assignedReplicaId;
200
+ if (assignedReplicaId) {
201
+ this.assignmentCache.set(entityKey, {
202
+ replicaId: assignedReplicaId,
203
+ replicaAddress: response.assignedReplicaAddr ?? '',
204
+ epoch: this.leaderElection?.epoch ?? 0,
205
+ cachedAt: Date.now(),
206
+ });
207
+ }
208
+ resolve();
209
+ });
210
+ });
211
+ }, {
212
+ maxAttempts: 3,
213
+ baseDelay: 50,
214
+ exponential: true,
215
+ onRetry: (attempt) => {
216
+ this.masterCache = null;
217
+ this.logger.warn(`Petition retry ${attempt} for ${entityKey}`);
218
+ },
219
+ });
220
+ }
221
+ async petitionMasterAndWait(entityKey, message, timeout) {
222
+ return (0, utils_1.retry)(async () => {
223
+ if (this.masterCoordinator.isMaster()) {
224
+ return this.dispatchAsMasterAndWait(entityKey, message, timeout);
225
+ }
226
+ const masterAddress = await this.getMasterAddress();
227
+ if (!masterAddress) {
228
+ throw new Error('No master available');
229
+ }
230
+ this.masterCache = null;
231
+ const client = await this.grpcClientPool.getClient('master', masterAddress);
232
+ return new Promise((resolve, reject) => {
233
+ const timer = setTimeout(() => reject(new Error(`Petition timeout after ${timeout}ms`)), timeout);
234
+ const stream = client.petitionAndWait({
235
+ entityKey,
236
+ message: this.serializeEnvelope(message),
237
+ masterEpoch: this.leaderElection?.epoch ?? 0,
238
+ });
239
+ stream.on('data', (response) => {
240
+ clearTimeout(timer);
241
+ if (response.error)
242
+ reject(new Error(response.error));
243
+ else if (response.result) {
244
+ resolve(JSON.parse(Buffer.from(response.result).toString()));
245
+ }
246
+ });
247
+ stream.on('error', (err) => {
248
+ clearTimeout(timer);
249
+ reject(err);
250
+ });
251
+ });
252
+ }, {
253
+ maxAttempts: 3,
254
+ baseDelay: 50,
255
+ exponential: true,
256
+ onRetry: (attempt) => {
257
+ this.masterCache = null;
258
+ this.logger.warn(`PetitionAndWait retry ${attempt} for ${entityKey}`);
259
+ },
260
+ });
261
+ }
262
+ // =========================================================================
263
+ // gRPC — Master → Replica (EnqueueToWorker) — REASSIGN ON FAILURE
264
+ // =========================================================================
265
+ async forwardToReplica(replicaId, entityKey, message) {
266
+ // Skip gRPC call if peer is already suspected dead
267
+ if (this.peerMonitor?.getPeerState(replicaId) === 'suspected-dead') {
268
+ this.masterCoordinator.release(entityKey);
269
+ this.nodeCache = null;
270
+ await this.dispatchAsMaster(entityKey, message);
271
+ return;
272
+ }
273
+ const replicaAddress = await this.getReplicaAddress(replicaId);
274
+ if (!replicaAddress) {
275
+ this.masterCoordinator.release(entityKey);
276
+ this.nodeCache = null;
277
+ await this.dispatchAsMaster(entityKey, message);
278
+ return;
279
+ }
280
+ try {
281
+ const client = await this.grpcClientPool.getClient(replicaId, replicaAddress);
282
+ const deadline = new Date(Date.now() + (this.config.grpc?.deadlines?.forwardMs ?? 1500));
283
+ await new Promise((resolve, reject) => {
284
+ client.enqueueToWorker({
285
+ entityKey,
286
+ message: this.serializeEnvelope(message),
287
+ masterEpoch: this.leaderElection?.epoch ?? 0,
288
+ }, { deadline }, (err, response) => {
289
+ if (err)
290
+ return reject(err);
291
+ if (!response.accepted)
292
+ return reject(new Error(response.rejectReason));
293
+ resolve();
294
+ });
295
+ });
296
+ this.grpcClientPool.recordSuccess(replicaId);
297
+ }
298
+ catch (err) {
299
+ const msg = err.message;
300
+ if (msg !== 'PEER_CIRCUIT_OPEN') {
301
+ this.logger.warn(`Forward to ${replicaId} failed: ${msg} — reassigning`);
302
+ this.grpcClientPool.recordFailure(replicaId);
303
+ }
304
+ this.masterCoordinator.release(entityKey);
305
+ this.grpcClientPool.removeClient(replicaId);
306
+ this.nodeCache = null;
307
+ await this.dispatchAsMaster(entityKey, message);
308
+ }
309
+ }
310
+ async forwardToReplicaAndWait(replicaId, entityKey, message, timeout) {
311
+ if (this.peerMonitor?.getPeerState(replicaId) === 'suspected-dead') {
312
+ this.masterCoordinator.release(entityKey);
313
+ this.nodeCache = null;
314
+ return this.dispatchAsMasterAndWait(entityKey, message, timeout);
315
+ }
316
+ const replicaAddress = await this.getReplicaAddress(replicaId);
317
+ if (!replicaAddress) {
318
+ this.masterCoordinator.release(entityKey);
319
+ this.nodeCache = null;
320
+ return this.dispatchAsMasterAndWait(entityKey, message, timeout);
321
+ }
322
+ try {
323
+ const client = await this.grpcClientPool.getClient(replicaId, replicaAddress);
324
+ const result = await new Promise((resolve, reject) => {
325
+ const timer = setTimeout(() => reject(new Error(`Forward timeout after ${timeout}ms`)), timeout);
326
+ const stream = client.enqueueToWorkerAndWait({
327
+ entityKey,
328
+ message: this.serializeEnvelope(message),
329
+ masterEpoch: this.leaderElection?.epoch ?? 0,
330
+ });
331
+ stream.on('data', (response) => {
332
+ clearTimeout(timer);
333
+ if (response.error)
334
+ reject(new Error(response.error));
335
+ else if (response.result) {
336
+ resolve(JSON.parse(Buffer.from(response.result).toString()));
337
+ }
338
+ });
339
+ stream.on('error', (err) => {
340
+ clearTimeout(timer);
341
+ reject(err);
342
+ });
343
+ });
344
+ this.grpcClientPool.recordSuccess(replicaId);
345
+ return result;
346
+ }
347
+ catch (err) {
348
+ const msg = err.message;
349
+ if (msg !== 'PEER_CIRCUIT_OPEN') {
350
+ this.logger.warn(`ForwardAndWait to ${replicaId} failed: ${msg} — reassigning`);
351
+ this.grpcClientPool.recordFailure(replicaId);
352
+ }
353
+ this.masterCoordinator.release(entityKey);
354
+ this.grpcClientPool.removeClient(replicaId);
355
+ this.nodeCache = null;
356
+ return this.dispatchAsMasterAndWait(entityKey, message, timeout);
357
+ }
358
+ }
359
+ // =========================================================================
360
+ // gRPC — Master → Foreign Master (Cross-Service)
361
+ // =========================================================================
362
+ async forwardToForeignService(message) {
363
+ const serviceGroup = await this.clusterDiscovery?.resolveServiceGroup(message.entityType);
364
+ if (!serviceGroup) {
365
+ throw new Error(`No service group found for foreign entity type '${message.entityType}'`);
366
+ }
367
+ const foreignAddress = await this.leaderElection?.getForeignMasterAddress(serviceGroup);
368
+ if (!foreignAddress) {
369
+ throw new Error(`Foreign master for group '${serviceGroup}' not found for entity type '${message.entityType}'`);
370
+ }
371
+ const serverId = this.config.grpc?.serverId ?? 'local';
372
+ await this.grpcClientPool.forward(`${serviceGroup}-master`, foreignAddress, message, serverId, 0, this.leaderElection?.epoch ?? 0);
373
+ }
374
+ async forwardToForeignServiceAndWait(message, timeout) {
375
+ const serviceGroup = await this.clusterDiscovery?.resolveServiceGroup(message.entityType);
376
+ if (!serviceGroup) {
377
+ throw new Error(`No service group found for foreign entity type '${message.entityType}'`);
378
+ }
379
+ const foreignAddress = await this.leaderElection?.getForeignMasterAddress(serviceGroup);
380
+ if (!foreignAddress) {
381
+ throw new Error(`Foreign master for group '${serviceGroup}' not found`);
382
+ }
383
+ const serverId = this.config.grpc?.serverId ?? 'local';
384
+ return this.grpcClientPool.forwardAndWait(`${serviceGroup}-master`, foreignAddress, message, serverId, 0, timeout, this.leaderElection?.epoch ?? 0);
385
+ }
386
+ // =========================================================================
387
+ // HELPERS — cached assignment routing (bypass master on repeat dispatch)
388
+ // =========================================================================
389
+ getAssignmentFromCache(entityKey) {
390
+ const entry = this.assignmentCache.get(entityKey);
391
+ if (!entry)
392
+ return null;
393
+ if (Date.now() - entry.cachedAt > 5000) {
394
+ this.assignmentCache.delete(entityKey);
395
+ return null;
396
+ }
397
+ return entry;
398
+ }
399
+ async dispatchViaCachedAssignment(entityKey, message, cached) {
400
+ const localServerId = this.config.grpc?.serverId ?? 'local';
401
+ if (cached.replicaId === localServerId) {
402
+ await this.workerManager.enqueue(entityKey, message);
403
+ return;
404
+ }
405
+ const client = await this.grpcClientPool.getClient(cached.replicaId, cached.replicaAddress);
406
+ const deadline = new Date(Date.now() + (this.config.grpc?.deadlines?.forwardMs ?? 1500));
407
+ await new Promise((resolve, reject) => {
408
+ client.enqueueToWorker({
409
+ entityKey,
410
+ message: this.serializeEnvelope(message),
411
+ masterEpoch: cached.epoch,
412
+ }, { deadline }, (err, response) => {
413
+ if (err)
414
+ return reject(err);
415
+ if (!response.accepted)
416
+ return reject(new Error(response.rejectReason));
417
+ resolve();
418
+ });
419
+ });
420
+ }
421
+ async dispatchViaCachedAssignmentAndWait(entityKey, message, timeout, cached) {
422
+ const localServerId = this.config.grpc?.serverId ?? 'local';
423
+ if (cached.replicaId === localServerId) {
424
+ return this.workerManager.enqueueAndWait(entityKey, message, timeout);
425
+ }
426
+ const client = await this.grpcClientPool.getClient(cached.replicaId, cached.replicaAddress);
427
+ return new Promise((resolve, reject) => {
428
+ const timer = setTimeout(() => reject(new Error(`Cached forward timeout after ${timeout}ms`)), timeout);
429
+ const stream = client.enqueueToWorkerAndWait({
430
+ entityKey,
431
+ message: this.serializeEnvelope(message),
432
+ masterEpoch: cached.epoch,
433
+ });
434
+ stream.on('data', (response) => {
435
+ clearTimeout(timer);
436
+ if (response.error)
437
+ reject(new Error(response.error));
438
+ else if (response.result) {
439
+ resolve(JSON.parse(Buffer.from(response.result).toString()));
440
+ }
441
+ });
442
+ stream.on('error', (err) => {
443
+ clearTimeout(timer);
444
+ reject(err);
445
+ });
446
+ });
447
+ }
448
+ // =========================================================================
449
+ // HELPERS — cached topology lookups
450
+ // =========================================================================
451
+ async getMasterAddress() {
452
+ if (!this.leaderElection)
453
+ return null;
454
+ if (this.masterCache && Date.now() < this.masterCache.expiresAt) {
455
+ return this.masterCache.address;
456
+ }
457
+ const address = await this.leaderElection.getMasterAddress();
458
+ this.masterCache = { address, expiresAt: Date.now() + 1000 };
459
+ return address;
460
+ }
461
+ async getReplicaAddress(replicaId) {
462
+ if (!this.clusterDiscovery)
463
+ return null;
464
+ let nodes;
465
+ if (this.nodeCache && Date.now() < this.nodeCache.expiresAt) {
466
+ nodes = this.nodeCache.nodes;
467
+ }
468
+ else {
469
+ nodes = await this.clusterDiscovery.getNodes();
470
+ this.nodeCache = { nodes, expiresAt: Date.now() + 1000 };
471
+ }
472
+ const node = nodes.find((n) => n.serverId === replicaId);
473
+ return node?.grpcAddress ?? null;
474
+ }
475
+ serializeEnvelope(message) {
476
+ return {
477
+ id: message.id,
478
+ name: message.name,
479
+ payload: Buffer.from(JSON.stringify(message.data)),
480
+ entityType: message.entityType,
481
+ entityId: message.entityId,
482
+ correlationId: message.correlationId ?? '',
483
+ isQuery: message.isQuery ?? false,
484
+ enqueuedAt: message.enqueuedAt,
485
+ attempts: message.attempts,
486
+ maxAttempts: message.maxAttempts,
487
+ originServer: this.config.grpc?.serverId ?? 'local',
488
+ hops: 0,
489
+ senderEpoch: this.leaderElection?.epoch ?? 0,
490
+ };
491
+ }
492
+ resolveTimeout(entityType, explicit) {
493
+ if (explicit !== undefined)
494
+ return explicit;
495
+ const entityConfig = this.config.entities?.[entityType];
496
+ if (entityConfig?.replyTimeout)
497
+ return entityConfig.replyTimeout;
498
+ return 60000;
499
+ }
500
+ };
501
+ exports.MessageRouter = MessageRouter;
502
+ exports.MessageRouter = MessageRouter = MessageRouter_1 = __decorate([
503
+ (0, common_1.Injectable)(),
504
+ __param(0, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_CONFIG)),
505
+ __param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => cluster_1.MasterCoordinator))),
506
+ __param(3, (0, common_1.Optional)()),
507
+ __param(4, (0, common_1.Optional)()),
508
+ __param(5, (0, common_1.Optional)()),
509
+ __param(6, (0, common_1.Optional)()),
510
+ __param(7, (0, common_1.Optional)()),
511
+ __metadata("design:paramtypes", [Object, workers_1.EntityWorkerManager,
512
+ cluster_1.MasterCoordinator,
513
+ grpc_1.GrpcClientPool,
514
+ cluster_1.ClusterDiscoveryService,
515
+ cluster_1.LeaderElectionService,
516
+ grpc_peer_monitor_service_1.GrpcPeerMonitor,
517
+ redis_health_monitor_service_1.RedisHealthMonitor])
518
+ ], MessageRouter);
519
+ //# sourceMappingURL=message-router.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-router.service.js","sourceRoot":"","sources":["../../../src/services/message-router/message-router.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RegistrySnapshot } from '../registry/registry.types';
1
+ import { RegistrySnapshot } from '../../domain/interfaces/registry.types';
2
2
  import { IMessageRef } from '../../domain';
3
3
  export interface ContractMessage {
4
4
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cluster-contracts.d.ts","sourceRoot":"","sources":["../../../src/services/queue-bus/cluster-contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cluster-contracts.d.ts","sourceRoot":"","sources":["../../../src/services/queue-bus/cluster-contracts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cluster-contracts.js","sourceRoot":"","sources":["../../../src/services/queue-bus/cluster-contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cluster-contracts.js","sourceRoot":"","sources":["../../../src/services/queue-bus/cluster-contracts.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,6 @@
1
1
  import { Type } from '@nestjs/common';
2
- import { DiscoveryService } from '@nestjs/core';
3
2
  import { IAtomicQueuesModuleConfig, IMessageRef, Reply, InferReply } from '../../domain';
4
- import { LogService } from '../log';
5
- import { ExecutorPoolService } from '../executor-pool';
6
- import { HandlerExecutor } from '../handler-executor';
7
- import { ResultCollector } from '../result-collector';
8
- import { RegistryService } from '../registry';
9
- import { ClusterContracts } from './cluster-contracts';
3
+ import { MessageRouter } from '../message-router';
10
4
  export interface EntityTarget {
11
5
  enqueue<T extends object>(commandOrQuery: T, options?: {
12
6
  entityId?: string;
@@ -40,14 +34,10 @@ export interface EntityTarget {
40
34
  }
41
35
  export declare class QueueBus {
42
36
  private readonly config;
43
- private readonly logService;
44
- private readonly executorPool;
45
- private readonly handlerExecutor;
46
- private readonly resultCollector;
47
- private readonly registryService?;
37
+ private readonly router;
48
38
  private readonly logger;
49
39
  private readonly keyPrefix;
50
- constructor(config: IAtomicQueuesModuleConfig, logService: LogService, executorPool: ExecutorPoolService, handlerExecutor: HandlerExecutor, resultCollector: ResultCollector, registryService?: RegistryService | undefined);
40
+ constructor(config: IAtomicQueuesModuleConfig, router: MessageRouter);
51
41
  enqueueClass<T extends object>(commandOrQuery: T, options?: {
52
42
  entityId?: string;
53
43
  }): Promise<IMessageRef>;
@@ -75,7 +65,6 @@ export declare class QueueBus {
75
65
  }): Promise<R>;
76
66
  enqueueAndWait<R = unknown>(entityType: string, messageName: string, entityId: string, data: Record<string, unknown>, timeout?: number): Promise<R>;
77
67
  forEntity(entityType: string): EntityTarget;
78
- introspect(): Promise<ClusterContracts>;
79
68
  private static readonly globalRegistry;
80
69
  static register(targetClass: Type<unknown>, isQuery?: boolean): void;
81
70
  static registerCommands(...commands: Type<unknown>[]): void;
@@ -91,15 +80,8 @@ export declare class QueueBus {
91
80
  targetClass: Type<unknown>;
92
81
  isQuery: boolean;
93
82
  }>;
94
- static discoverFromCqrs(discoveryService: DiscoveryService): {
95
- commands: number;
96
- queries: number;
97
- };
98
83
  private resolveEntityType;
99
84
  private dispatchClass;
100
85
  private dispatchClassAndWait;
101
- private dispatchRaw;
102
- private resolveTimeout;
103
- private dispatchRawAndWait;
104
86
  }
105
87
  //# sourceMappingURL=queue-bus.service.d.ts.map