pp-command-bus 1.1.0 → 1.2.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 (35) hide show
  1. package/dist/command-bus/command-bus.spec.js +17 -3
  2. package/dist/command-bus/command-bus.spec.js.map +1 -1
  3. package/dist/command-bus/index.d.ts +1 -2
  4. package/dist/command-bus/index.js +13 -12
  5. package/dist/command-bus/index.js.map +1 -1
  6. package/dist/command-bus/job/job-processor.d.ts +8 -10
  7. package/dist/command-bus/job/job-processor.js +23 -113
  8. package/dist/command-bus/job/job-processor.js.map +1 -1
  9. package/dist/command-bus/job/job-processor.spec.js +17 -107
  10. package/dist/command-bus/job/job-processor.spec.js.map +1 -1
  11. package/dist/command-bus/rpc/rpc-coordinator.d.ts +39 -16
  12. package/dist/command-bus/rpc/rpc-coordinator.js +174 -94
  13. package/dist/command-bus/rpc/rpc-coordinator.js.map +1 -1
  14. package/dist/command-bus/rpc/rpc-coordinator.spec.js +64 -434
  15. package/dist/command-bus/rpc/rpc-coordinator.spec.js.map +1 -1
  16. package/dist/command-bus/types/index.d.ts +5 -4
  17. package/dist/command-bus/worker/worker-benchmark.d.ts +2 -1
  18. package/dist/command-bus/worker/worker-benchmark.js +34 -41
  19. package/dist/command-bus/worker/worker-benchmark.js.map +1 -1
  20. package/dist/command-bus/worker/worker-benchmark.spec.js +25 -15
  21. package/dist/command-bus/worker/worker-benchmark.spec.js.map +1 -1
  22. package/dist/command-bus/worker/worker-metrics-collector.d.ts +60 -49
  23. package/dist/command-bus/worker/worker-metrics-collector.js +176 -193
  24. package/dist/command-bus/worker/worker-metrics-collector.js.map +1 -1
  25. package/dist/command-bus/worker/worker-orchestrator.d.ts +1 -1
  26. package/dist/command-bus/worker/worker-orchestrator.js +20 -25
  27. package/dist/command-bus/worker/worker-orchestrator.js.map +1 -1
  28. package/dist/command-bus/worker/worker-orchestrator.spec.js +32 -28
  29. package/dist/command-bus/worker/worker-orchestrator.spec.js.map +1 -1
  30. package/dist/pp-command-bus-1.2.0.tgz +0 -0
  31. package/package.json +1 -1
  32. package/dist/command-bus/worker/worker-metrics-collector.spec.d.ts +0 -1
  33. package/dist/command-bus/worker/worker-metrics-collector.spec.js +0 -315
  34. package/dist/command-bus/worker/worker-metrics-collector.spec.js.map +0 -1
  35. package/dist/pp-command-bus-1.1.0.tgz +0 -0
@@ -24,11 +24,10 @@ class TestCommand extends command_1.default {
24
24
  describe('JobProcessor', () => {
25
25
  let jobProcessor;
26
26
  let mockCommandHandlers;
27
- let mockQueueManager;
27
+ let mockRedisConnection;
28
28
  let mockLogger;
29
29
  let mockJobOptionsBuilder;
30
30
  let mockCommandLogger;
31
- let mockReplyQueue;
32
31
  beforeEach(() => {
33
32
  jest.clearAllMocks();
34
33
  mockLogger = {
@@ -37,13 +36,8 @@ describe('JobProcessor', () => {
37
36
  warn: jest.fn(),
38
37
  debug: jest.fn(),
39
38
  };
40
- mockReplyQueue = {
41
- add: jest.fn().mockResolvedValue({ id: 'reply-job-id' }),
42
- close: jest.fn().mockResolvedValue(undefined),
43
- };
44
- mockQueueManager = {
45
- createQueue: jest.fn().mockReturnValue(mockReplyQueue),
46
- queueExists: jest.fn().mockResolvedValue(true), // Domyślnie kolejka istnieje
39
+ mockRedisConnection = {
40
+ publish: jest.fn().mockResolvedValue(1), // Redis publish zwraca liczbę subscribers
47
41
  };
48
42
  mockJobOptionsBuilder = {
49
43
  buildRpcReplyOptions: jest.fn().mockReturnValue({}),
@@ -52,7 +46,7 @@ describe('JobProcessor', () => {
52
46
  logCommand: jest.fn().mockResolvedValue(undefined),
53
47
  };
54
48
  mockCommandHandlers = {};
55
- jobProcessor = new job_processor_1.default(mockCommandHandlers, mockQueueManager, mockLogger, mockJobOptionsBuilder, mockCommandLogger);
49
+ jobProcessor = new job_processor_1.default(mockCommandHandlers, mockRedisConnection, mockLogger, mockJobOptionsBuilder, mockCommandLogger);
56
50
  });
57
51
  describe('process - standardowy job', () => {
58
52
  it('powinno przetworzyć komendę i wywołać handler', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -148,7 +142,7 @@ describe('JobProcessor', () => {
148
142
  mockCommandHandlers[commandName] = mockHandler;
149
143
  const rpcMetadata = {
150
144
  correlationId: 'correlation-123',
151
- replyQueue: 'rpc-reply-test',
145
+ responseChannel: 'rpc:response:test',
152
146
  timestamp: Date.now(),
153
147
  };
154
148
  const job = {
@@ -160,21 +154,15 @@ describe('JobProcessor', () => {
160
154
  const actualResult = yield jobProcessor.process(job, commandName);
161
155
  // Then
162
156
  expect(actualResult).toEqual(result);
163
- expect(mockQueueManager.createQueue).toHaveBeenCalledWith('rpc-reply-test');
164
- expect(mockReplyQueue.add).toHaveBeenCalledWith('rpc-response', {
157
+ expect(mockRedisConnection.publish).toHaveBeenCalledWith('rpc:response:test', JSON.stringify({
165
158
  correlationId: 'correlation-123',
166
159
  result,
167
160
  error: null,
168
- }, {});
169
- expect(mockLogger.debug).toHaveBeenCalledWith('Odpowiedź RPC wysłana', expect.objectContaining({
170
- commandName,
171
- correlationId: 'correlation-123',
172
161
  }));
173
- // Weryfikacja że kolejka została zamknięta
174
- expect(mockReplyQueue.close).toHaveBeenCalled();
175
- expect(mockLogger.debug).toHaveBeenCalledWith('Tymczasowa kolejka RPC zamknięta', expect.objectContaining({
162
+ expect(mockLogger.debug).toHaveBeenCalledWith('Odpowiedź RPC opublikowana przez Pub/Sub', expect.objectContaining({
176
163
  commandName,
177
164
  correlationId: 'correlation-123',
165
+ responseChannel: 'rpc:response:test',
178
166
  }));
179
167
  }));
180
168
  it('powinno wysłać błąd RPC gdy handler rzuci błąd', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -186,7 +174,7 @@ describe('JobProcessor', () => {
186
174
  mockCommandHandlers[commandName] = mockHandler;
187
175
  const rpcMetadata = {
188
176
  correlationId: 'correlation-123',
189
- replyQueue: 'rpc-reply-test',
177
+ responseChannel: 'rpc:response:test',
190
178
  timestamp: Date.now(),
191
179
  };
192
180
  const job = {
@@ -196,21 +184,10 @@ describe('JobProcessor', () => {
196
184
  };
197
185
  // When & Then
198
186
  yield expect(jobProcessor.process(job, commandName)).rejects.toThrow('Handler failed');
199
- expect(mockReplyQueue.add).toHaveBeenCalledWith('rpc-response', {
187
+ expect(mockRedisConnection.publish).toHaveBeenCalledWith('rpc:response:test', JSON.stringify({
200
188
  correlationId: 'correlation-123',
201
189
  result: null,
202
190
  error: 'Handler failed',
203
- }, {});
204
- expect(mockLogger.error).toHaveBeenCalledWith('Błąd RPC wysłany do nadawcy', expect.objectContaining({
205
- commandName,
206
- correlationId: 'correlation-123',
207
- error: 'Handler failed',
208
- }));
209
- // Weryfikacja że kolejka została zamknięta nawet przy błędzie
210
- expect(mockReplyQueue.close).toHaveBeenCalled();
211
- expect(mockLogger.debug).toHaveBeenCalledWith('Tymczasowa kolejka RPC zamknięta (po błędzie)', expect.objectContaining({
212
- commandName,
213
- correlationId: 'correlation-123',
214
191
  }));
215
192
  }));
216
193
  it('powinno zalogować błąd gdy nie udało się wysłać odpowiedzi RPC', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -220,11 +197,11 @@ describe('JobProcessor', () => {
220
197
  const result = { success: true };
221
198
  const mockHandler = jest.fn().mockResolvedValue(result);
222
199
  mockCommandHandlers[commandName] = mockHandler;
223
- const replyError = new Error('Reply queue error');
224
- mockReplyQueue.add.mockRejectedValueOnce(replyError);
200
+ const publishError = new Error('Redis publish error');
201
+ mockRedisConnection.publish.mockRejectedValueOnce(publishError);
225
202
  const rpcMetadata = {
226
203
  correlationId: 'correlation-123',
227
- replyQueue: 'rpc-reply-test',
204
+ responseChannel: 'rpc:response:test',
228
205
  timestamp: Date.now(),
229
206
  };
230
207
  const job = {
@@ -235,80 +212,13 @@ describe('JobProcessor', () => {
235
212
  // When
236
213
  yield jobProcessor.process(job, commandName);
237
214
  // Then
238
- expect(mockLogger.error).toHaveBeenCalledWith('Nie udało się wysłać odpowiedzi RPC', expect.objectContaining({
215
+ expect(mockLogger.error).toHaveBeenCalledWith('Nie udało się opublikować odpowiedzi RPC', expect.objectContaining({
239
216
  commandName,
240
217
  correlationId: 'correlation-123',
241
- error: 'Reply queue error',
242
- }));
243
- }));
244
- it('NIE powinno wysyłać odpowiedzi RPC gdy kolejka odpowiedzi już nie istnieje', () => __awaiter(void 0, void 0, void 0, function* () {
245
- // Given
246
- const command = new TestCommand('test data');
247
- const commandName = 'TestCommand';
248
- const result = { success: true };
249
- const mockHandler = jest.fn().mockResolvedValue(result);
250
- mockCommandHandlers[commandName] = mockHandler;
251
- // Mock queueExists - kolejka nie istnieje (timeout usunął)
252
- mockQueueManager.queueExists = jest.fn().mockResolvedValue(false);
253
- const rpcMetadata = {
254
- correlationId: 'correlation-timeout',
255
- replyQueue: 'rpc-reply-timeout',
256
- timestamp: Date.now(),
257
- };
258
- const job = {
259
- id: 'job-123',
260
- data: Object.assign(Object.assign({}, command), { __rpcMetadata: rpcMetadata }),
261
- attemptsMade: 0,
262
- };
263
- // When
264
- const actualResult = yield jobProcessor.process(job, commandName);
265
- // Then
266
- expect(actualResult).toEqual(result);
267
- expect(mockQueueManager.queueExists).toHaveBeenCalledWith('rpc-reply-timeout');
268
- // Nie powinno próbować tworzyć kolejki
269
- expect(mockQueueManager.createQueue).not.toHaveBeenCalled();
270
- // Nie powinno próbować wysyłać odpowiedzi
271
- expect(mockReplyQueue.add).not.toHaveBeenCalled();
272
- // Powinno zalogować warning
273
- expect(mockLogger.warn).toHaveBeenCalledWith('Kolejka odpowiedzi RPC już nie istnieje - pomijam wysyłkę', expect.objectContaining({
274
- commandName,
275
- correlationId: 'correlation-timeout',
276
- replyQueue: 'rpc-reply-timeout',
277
- }));
278
- }));
279
- it('NIE powinno wysyłać błędu RPC gdy kolejka odpowiedzi już nie istnieje', () => __awaiter(void 0, void 0, void 0, function* () {
280
- // Given
281
- const command = new TestCommand('test data');
282
- const commandName = 'TestCommand';
283
- const handlerError = new Error('Handler failed');
284
- const mockHandler = jest.fn().mockRejectedValue(handlerError);
285
- mockCommandHandlers[commandName] = mockHandler;
286
- // Mock queueExists - kolejka nie istnieje (timeout usunął)
287
- mockQueueManager.queueExists = jest.fn().mockResolvedValue(false);
288
- const rpcMetadata = {
289
- correlationId: 'correlation-timeout',
290
- replyQueue: 'rpc-reply-timeout',
291
- timestamp: Date.now(),
292
- };
293
- const job = {
294
- id: 'job-123',
295
- data: Object.assign(Object.assign({}, command), { __rpcMetadata: rpcMetadata }),
296
- attemptsMade: 0,
297
- };
298
- // When & Then
299
- yield expect(jobProcessor.process(job, commandName)).rejects.toThrow('Handler failed');
300
- expect(mockQueueManager.queueExists).toHaveBeenCalledWith('rpc-reply-timeout');
301
- // Nie powinno próbować tworzyć kolejki
302
- expect(mockQueueManager.createQueue).not.toHaveBeenCalled();
303
- // Nie powinno próbować wysyłać błędu
304
- expect(mockReplyQueue.add).not.toHaveBeenCalled();
305
- // Powinno zalogować warning
306
- expect(mockLogger.warn).toHaveBeenCalledWith('Kolejka odpowiedzi RPC już nie istnieje - pomijam wysyłkę błędu', expect.objectContaining({
307
- commandName,
308
- correlationId: 'correlation-timeout',
309
- replyQueue: 'rpc-reply-timeout',
218
+ error: 'Redis publish error',
310
219
  }));
311
220
  }));
221
+ // Testy dla queueExists zostały usunięte - Pub/Sub nie wymaga sprawdzania istnienia kolejki
312
222
  });
313
223
  describe('rekonstrukcja dat', () => {
314
224
  it('powinno zrekonstruować daty w komendzie', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -344,7 +254,7 @@ describe('JobProcessor', () => {
344
254
  describe('process bez commandLogger', () => {
345
255
  it('powinno działać gdy commandLogger nie jest dostępny', () => __awaiter(void 0, void 0, void 0, function* () {
346
256
  // Given
347
- const jobProcessorWithoutLogger = new job_processor_1.default(mockCommandHandlers, mockQueueManager, mockLogger, mockJobOptionsBuilder);
257
+ const jobProcessorWithoutLogger = new job_processor_1.default(mockCommandHandlers, mockRedisConnection, mockLogger, mockJobOptionsBuilder);
348
258
  const command = new TestCommand('test data');
349
259
  const commandName = 'TestCommand';
350
260
  const mockHandler = jest.fn().mockResolvedValue({ success: true });
@@ -1 +1 @@
1
- {"version":3,"file":"job-processor.spec.js","sourceRoot":"","sources":["../../../src/command-bus/job/job-processor.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-processor.spec.js","sourceRoot":"","sources":["../../../src/command-bus/job/job-processor.spec.ts"],"names":[],"mappings":"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"}
@@ -2,30 +2,47 @@ import type { Redis } from 'ioredis';
2
2
  import type { ILogger } from '../../shared/types';
3
3
  import type { RpcMetadata } from '../types';
4
4
  import type Command from '../command';
5
- import type { QueueManager } from 'command-bus/queue';
6
5
  /**
7
- * Zarządza lifecycle wywołań RPC bez mapy pending calls
8
- * Każde wywołanie call() tworzy unikalną kolejkę odpowiedzi
9
- * Kolejka jest automatycznie kasowana po otrzymaniu odpowiedzi lub timeout
6
+ * Zarządza lifecycle wywołań RPC przez Redis Pub/Sub
7
+ * Każde wywołanie call() subskrybuje dedykowany kanał dla odpowiedzi
8
+ * Odpowiedzi wysyłane przez redis.publish() zamiast kolejek BullMQ
10
9
  */
11
10
  export default class RpcCoordinator {
12
11
  private readonly logger;
13
12
  private readonly redisConnection;
14
- private readonly queueManager;
15
- constructor(logger: ILogger, redisConnection: Redis, queueManager: QueueManager);
13
+ /**
14
+ * Pool reużywalnych Redis subscribers
15
+ * Maksymalnie 20 subscribers w puli dla optymalizacji pamięci
16
+ */
17
+ private subscriberPool;
18
+ /**
19
+ * Maksymalna wielkość puli subscribers
20
+ */
21
+ private readonly maxPoolSize;
22
+ constructor(logger: ILogger, redisConnection: Redis);
23
+ /**
24
+ * Pobiera subscriber z puli lub tworzy nowy
25
+ * @returns Redis subscriber instance
26
+ */
27
+ private acquireSubscriber;
28
+ /**
29
+ * Zwraca subscriber do puli lub zamyka jeśli pula pełna
30
+ * @param subscriber - Subscriber do zwrócenia
31
+ */
32
+ private releaseSubscriber;
16
33
  /**
17
34
  * Przygotowuje komendę RPC z odpowiednimi metadanymi
18
35
  * @param command - Komenda do wysłania
19
- * @param replyQueueName - Nazwa kolejki odpowiedzi
36
+ * @param responseChannel - Nazwa kanału Redis Pub/Sub dla odpowiedzi
20
37
  * @returns Komenda z metadanymi RPC
21
38
  */
22
- prepareRpcCommand<T extends Command>(command: T, replyQueueName: string): T & {
39
+ prepareRpcCommand<T extends Command>(command: T, responseChannel: string): T & {
23
40
  __rpcMetadata: RpcMetadata;
24
41
  };
25
42
  /**
26
- * Rejestruje nowe wywołanie RPC z timeout
27
- * Tworzy unikalną kolejkę i worker dla tego wywołania
28
- * Automatycznie czyści zasoby po zakończeniu (sukces/błąd/timeout)
43
+ * Rejestruje nowe wywołanie RPC z timeout przez Redis Pub/Sub
44
+ * Subskrybuje dedykowany kanał dla odpowiedzi
45
+ * Automatycznie czyści subscriber po zakończeniu (sukces/błąd/timeout)
29
46
  *
30
47
  * @param correlationId - Unikalny ID wywołania
31
48
  * @param commandName - Nazwa komendy
@@ -34,12 +51,18 @@ export default class RpcCoordinator {
34
51
  */
35
52
  registerCall<T>(correlationId: string, commandName: string, timeout: number): Promise<T>;
36
53
  /**
37
- * Czyści zasoby RPC - zamyka worker i usuwa kolejkę
54
+ * Czyści subscriber po zakończeniu RPC call
55
+ * Unsubscribe z grace period (100ms) i zwrot do puli
38
56
  * Fail-safe - nie rzuca błędów, tylko loguje
39
57
  *
40
- * @param worker - Worker do zamknięcia
41
- * @param queue - Kolejka do usunięcia
42
- * @param queueName - Nazwa kolejki (dla logowania)
58
+ * @param subscriber - Subscriber do wyczyszczenia
59
+ * @param responseChannel - Kanał do unsubscribe
60
+ * @param correlationId - ID wywołania (dla logowania)
61
+ */
62
+ private cleanupSubscriber;
63
+ /**
64
+ * Zamyka wszystkie subscribers z puli i czyści zasoby
65
+ * Wywołane przy zamykaniu CommandBus
43
66
  */
44
- private cleanupRpcResources;
67
+ close(): Promise<void>;
45
68
  }