pp-command-bus 1.3.0 → 1.3.1

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 CHANGED
@@ -232,7 +232,7 @@ const config = new CommandBusConfig({
232
232
  logger: console, // ILogger interface
233
233
  logLevel: 'log', // debug | log | warn | error
234
234
  concurrency: 5,
235
- maxAttempts: 3,
235
+ maxAttempts: 1,
236
236
  });
237
237
 
238
238
  // Utwórz instancję CommandBus
@@ -295,7 +295,7 @@ Biblioteka wspiera konfigurację poprzez zmienne środowiskowe z prefiksem `COMM
295
295
  | `REDIS_URL` | string | `redis://localhost:6379` | URL połączenia Redis/DragonflyDB (wspiera username, password, db) |
296
296
  | `LOG_LEVEL` | enum | `log` | Poziom logowania: `debug`, `log`, `warn`, `error` |
297
297
  | `COMMAND_BUS_CONCURRENCY` | number | `1` (lub auto) | Liczba równoległych workerów do przetwarzania komend |
298
- | `COMMAND_BUS_MAX_ATTEMPTS` | number | `3` | Maksymalna liczba prób przetworzenia zadania |
298
+ | `COMMAND_BUS_MAX_ATTEMPTS` | number | `1` | Maksymalna liczba prób przetworzenia zadania |
299
299
  | `COMMAND_BUS_BACKOFF_DELAY` | number | `2000` | Opóźnienie między próbami w milisekundach |
300
300
  | `COMMAND_BUS_QUEUE_MODE` | enum | `fifo` | Tryb przetwarzania kolejki: `fifo` (First In First Out) lub `lifo` (Last In First Out) |
301
301
  | `COMMAND_BUS_LOG` | string | _(puste)_ | Ścieżka do katalogu logów komend (JSONL format, rotacja co godzinę) |
@@ -328,7 +328,7 @@ COMMAND_BUS_AUTO_OPTIMIZE=true
328
328
  # COMMAND_BUS_CONCURRENCY=10
329
329
 
330
330
  # Retry i backoff
331
- COMMAND_BUS_MAX_ATTEMPTS=5 # Maksymalna liczba prób
331
+ COMMAND_BUS_MAX_ATTEMPTS=1 # Maksymalna liczba prób
332
332
  COMMAND_BUS_BACKOFF_DELAY=3000 # Opóźnienie między próbami (3s)
333
333
 
334
334
  # Tryb kolejki
@@ -596,7 +596,7 @@ interface CommandBusConfigOptions {
596
596
  logger?: ILogger; // Logger (domyślnie console)
597
597
  logLevel?: 'debug' | 'log' | 'warn' | 'error'; // Poziom logowania (domyślnie 'log')
598
598
  concurrency?: number; // Liczba workerów (domyślnie 1 lub auto)
599
- maxAttempts?: number; // Maksymalna liczba prób (domyślnie 3)
599
+ maxAttempts?: number; // Maksymalna liczba prób (domyślnie 1)
600
600
  backoffDelay?: number; // Opóźnienie między próbami w ms (domyślnie 2000)
601
601
  queueMode?: 'fifo' | 'lifo'; // Tryb kolejki (domyślnie 'fifo')
602
602
  commandLog?: string; // Ścieżka do katalogu logów komend (opcjonalnie)
@@ -150,7 +150,7 @@ describe('CommandBus', () => {
150
150
  __compressed: false, // Mała komenda nie powinna być skompresowana
151
151
  data: 'test data',
152
152
  }), expect.objectContaining({
153
- attempts: 3,
153
+ attempts: 1,
154
154
  backoff: expect.objectContaining({
155
155
  type: 'exponential',
156
156
  delay: 2000,
@@ -8,7 +8,7 @@ export default class CommandBusConfig extends BaseConfig {
8
8
  */
9
9
  concurrency: number;
10
10
  /**
11
- * Maksymalna liczba prób przetworzenia zadania
11
+ * Maksymalna liczba prób przetworzenia zadania (domyślnie 1)
12
12
  */
13
13
  maxAttempts: number;
14
14
  /**
@@ -18,7 +18,7 @@ class CommandBusConfig extends base_config_1.default {
18
18
  const manualConcurrencyFromEnv = !!((_a = process.env.COMMAND_BUS_CONCURRENCY) !== null && _a !== void 0 ? _a : process.env.EVENT_BUS_CONCURRENCY);
19
19
  // Wczytaj konfigurację z nowym prefiksem COMMAND_BUS_ z fallbackiem do starych nazw
20
20
  this.concurrency = this.parseIntWithDefault((_b = process.env.COMMAND_BUS_CONCURRENCY) !== null && _b !== void 0 ? _b : process.env.EVENT_BUS_CONCURRENCY, 1);
21
- this.maxAttempts = this.parseIntWithDefault((_c = process.env.COMMAND_BUS_MAX_ATTEMPTS) !== null && _c !== void 0 ? _c : process.env.EVENT_BUS_MAX_ATTEMPTS, 3);
21
+ this.maxAttempts = this.parseIntWithDefault((_c = process.env.COMMAND_BUS_MAX_ATTEMPTS) !== null && _c !== void 0 ? _c : process.env.EVENT_BUS_MAX_ATTEMPTS, 1);
22
22
  this.backoffDelay = this.parseIntWithDefault((_d = process.env.COMMAND_BUS_BACKOFF_DELAY) !== null && _d !== void 0 ? _d : process.env.EVENT_BUS_BACKOFF_DELAY, 2000);
23
23
  const queueModeValue = (_e = process.env.COMMAND_BUS_QUEUE_MODE) !== null && _e !== void 0 ? _e : process.env.EVENT_BUS_QUEUE_MODE;
24
24
  this.queueMode = queueModeValue === 'lifo' ? 'lifo' : 'fifo';
@@ -25,7 +25,7 @@ describe('CommandBusConfig', () => {
25
25
  // autoOptimize jest domyślnie true, więc concurrency będzie auto-optymalizowane
26
26
  expect(config.autoOptimize).toBe(true);
27
27
  expect(config.concurrency).toBeGreaterThan(1); // Auto-optymalizacja
28
- expect(config.maxAttempts).toBe(3);
28
+ expect(config.maxAttempts).toBe(1);
29
29
  expect(config.backoffDelay).toBe(2000);
30
30
  expect(config.queueMode).toBe('fifo');
31
31
  expect(config.commandLog).toBe('');
@@ -116,7 +116,7 @@ describe('CommandBusConfig', () => {
116
116
  // Gdy zmienna środowiskowa jest ustawiona (nawet nieprawidłowo), uznajemy ją za ręczne ustawienie
117
117
  // więc nie uruchamiamy auto-optymalizacji i używamy fallback wartości z parseIntWithDefault
118
118
  expect(config.concurrency).toBe(1); // Fallback value z parseIntWithDefault
119
- expect(config.maxAttempts).toBe(3);
119
+ expect(config.maxAttempts).toBe(1);
120
120
  expect(config.backoffDelay).toBe(2000);
121
121
  });
122
122
  it('powinno prawidłowo parsować queue mode', () => {
@@ -10,7 +10,7 @@ describe('JobOptionsBuilder', () => {
10
10
  it('powinien zwrócić standardowe opcje z domyślną konfiguracją', () => {
11
11
  const config = new command_bus_config_1.default({
12
12
  redisUrl: 'redis://localhost:6379',
13
- maxAttempts: 3,
13
+ maxAttempts: 1,
14
14
  backoffDelay: 2000,
15
15
  queueMode: 'fifo',
16
16
  });
@@ -25,7 +25,7 @@ describe('JobOptionsBuilder', () => {
25
25
  count: 500, // Memory optimization: więcej dla debugging
26
26
  age: 3600, // Memory optimization: 1h
27
27
  },
28
- attempts: 3,
28
+ attempts: 1,
29
29
  backoff: {
30
30
  type: 'exponential',
31
31
  delay: 2000,
@@ -66,7 +66,7 @@ describe('JobOptionsBuilder', () => {
66
66
  it('powinien zwrócić opcje RPC reply z domyślnym TTL', () => {
67
67
  const config = new command_bus_config_1.default({
68
68
  redisUrl: 'redis://localhost:6379',
69
- maxAttempts: 3,
69
+ maxAttempts: 1,
70
70
  backoffDelay: 2000,
71
71
  });
72
72
  const builder = new job_options_builder_1.default(config);
@@ -80,7 +80,7 @@ describe('JobOptionsBuilder', () => {
80
80
  age: 300, // Memory optimization: 5 minut
81
81
  count: 50, // Memory optimization: mniej failed jobs
82
82
  },
83
- attempts: 3,
83
+ attempts: 1,
84
84
  backoff: {
85
85
  type: 'exponential',
86
86
  delay: 2000,
@@ -67,7 +67,7 @@ describe('JobProcessor', () => {
67
67
  id: 'job-123',
68
68
  data: command,
69
69
  attemptsMade: 0,
70
- opts: { attempts: 3 },
70
+ opts: { attempts: 1 },
71
71
  };
72
72
  // When
73
73
  const result = yield jobProcessor.process(job, commandName);
@@ -128,7 +128,7 @@ describe('JobProcessor', () => {
128
128
  id: 'job-123',
129
129
  data: command,
130
130
  attemptsMade: 1,
131
- opts: { attempts: 3 },
131
+ opts: { attempts: 1 },
132
132
  };
133
133
  // When & Then
134
134
  yield expect(jobProcessor.process(job, commandName)).rejects.toThrow('Handler error');
@@ -41,7 +41,7 @@ describe('WorkerOrchestrator', () => {
41
41
  let mockLogger;
42
42
  let mockWorker;
43
43
  const concurrency = 5;
44
- const maxAttempts = 3;
44
+ const maxAttempts = 1;
45
45
  // Storage dla concurrency każdego workera
46
46
  const workerConcurrencyStorage = new Map();
47
47
  beforeEach(() => {
@@ -163,7 +163,7 @@ describe('WorkerOrchestrator', () => {
163
163
  const mockJob = {
164
164
  id: 'job-123',
165
165
  data: { __id: 'cmd-123' },
166
- attemptsMade: 2,
166
+ attemptsMade: 0,
167
167
  opts: { attempts: maxAttempts },
168
168
  };
169
169
  const error = new Error('Job failed');
@@ -174,7 +174,7 @@ describe('WorkerOrchestrator', () => {
174
174
  commandName,
175
175
  jobId: 'job-123',
176
176
  error: 'Job failed',
177
- attempt: 2,
177
+ attempt: 0,
178
178
  maxAttempts,
179
179
  isRetryable: true,
180
180
  }));
@@ -673,7 +673,7 @@ describe('WorkerOrchestrator', () => {
673
673
  id: 'job-123',
674
674
  data: { __id: 'cmd-123' },
675
675
  attemptsMade: 1,
676
- opts: { attempts: 3 },
676
+ opts: { attempts: 1 },
677
677
  };
678
678
  const WorkerMetricsCollector = jest.requireMock('./worker-metrics-collector');
679
679
  const collectorInstance = WorkerMetricsCollector.mock.results[0].value;
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pp-command-bus",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Distributed Command Bus library supporting RPC and job queuing with BullMQ for Redis/DragonflyDB",
5
5
  "homepage": "https://gitlab.polskiepolisy.pl/lib/pp-command-bus",
6
6
  "repository": {
Binary file