pp-command-bus 2.0.0 → 2.0.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/dist/command-bus/config/command-bus-config.d.ts +5 -0
- package/dist/command-bus/config/command-bus-config.js +6 -1
- package/dist/command-bus/config/command-bus-config.js.map +1 -1
- package/dist/command-bus/index.d.ts +4 -0
- package/dist/command-bus/index.js +11 -2
- package/dist/command-bus/index.js.map +1 -1
- package/dist/command-bus/interceptors/index.d.ts +5 -0
- package/dist/command-bus/interceptors/index.js +22 -0
- package/dist/command-bus/interceptors/index.js.map +1 -0
- package/dist/command-bus/interceptors/interceptor.interface.d.ts +35 -0
- package/dist/command-bus/interceptors/interceptor.interface.js +3 -0
- package/dist/command-bus/interceptors/interceptor.interface.js.map +1 -0
- package/dist/command-bus/interceptors/performance-interceptor.d.ts +24 -0
- package/dist/command-bus/interceptors/performance-interceptor.js +86 -0
- package/dist/command-bus/interceptors/performance-interceptor.js.map +1 -0
- package/dist/command-bus/interceptors/performance-interceptor.spec.d.ts +1 -0
- package/dist/command-bus/interceptors/performance-interceptor.spec.js +124 -0
- package/dist/command-bus/interceptors/performance-interceptor.spec.js.map +1 -0
- package/dist/command-bus/transport/message-processor.d.ts +11 -0
- package/dist/command-bus/transport/message-processor.js +48 -1
- package/dist/command-bus/transport/message-processor.js.map +1 -1
- package/dist/command-bus/transport/redis-streams-transport.d.ts +3 -0
- package/dist/command-bus/transport/redis-streams-transport.js +9 -0
- package/dist/command-bus/transport/redis-streams-transport.js.map +1 -1
- package/dist/command-bus/transport/stream-consumer.d.ts +2 -0
- package/dist/command-bus/transport/stream-consumer.js +1 -0
- package/dist/command-bus/transport/stream-consumer.js.map +1 -1
- package/dist/pp-command-bus-2.0.1.tgz +0 -0
- package/dist/shared/redis/connection-pool.js +7 -1
- package/dist/shared/redis/connection-pool.js.map +1 -1
- package/package.json +1 -1
- package/dist/pp-command-bus-2.0.0.tgz +0 -0
|
@@ -80,6 +80,11 @@ export default class CommandBusConfig {
|
|
|
80
80
|
* @default 10000
|
|
81
81
|
*/
|
|
82
82
|
maxRetained: number;
|
|
83
|
+
/**
|
|
84
|
+
* Próg wolnego handlera (ms) - handlary przekraczające ten czas są logowane jako wolne
|
|
85
|
+
* @default 1000
|
|
86
|
+
*/
|
|
87
|
+
slowHandlerThreshold: number;
|
|
83
88
|
constructor(params?: Partial<CommandBusConfig>);
|
|
84
89
|
/**
|
|
85
90
|
* Zwraca opcje połączenia Redis na podstawie URL
|
|
@@ -10,7 +10,7 @@ const logger_1 = require("../../shared/logging/logger");
|
|
|
10
10
|
*/
|
|
11
11
|
class CommandBusConfig {
|
|
12
12
|
constructor(params) {
|
|
13
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
13
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
14
14
|
// Redis
|
|
15
15
|
this.redisUrl = (_b = (_a = params === null || params === void 0 ? void 0 : params.redisUrl) !== null && _a !== void 0 ? _a : process.env.REDIS_URL) !== null && _b !== void 0 ? _b : 'redis://localhost:6379';
|
|
16
16
|
this.redisRetryDelay =
|
|
@@ -36,6 +36,8 @@ class CommandBusConfig {
|
|
|
36
36
|
(_q = params === null || params === void 0 ? void 0 : params.claimTimeout) !== null && _q !== void 0 ? _q : CommandBusConfig.parseIntWithDefault(process.env.COMMAND_BUS_CLAIM_TIMEOUT, 30000);
|
|
37
37
|
this.maxRetained =
|
|
38
38
|
(_r = params === null || params === void 0 ? void 0 : params.maxRetained) !== null && _r !== void 0 ? _r : CommandBusConfig.parseIntWithDefault(process.env.COMMAND_BUS_MAX_RETAINED, 10000);
|
|
39
|
+
this.slowHandlerThreshold =
|
|
40
|
+
(_s = params === null || params === void 0 ? void 0 : params.slowHandlerThreshold) !== null && _s !== void 0 ? _s : CommandBusConfig.parseIntWithDefault(process.env.COMMAND_BUS_SLOW_HANDLER_THRESHOLD, 1000);
|
|
39
41
|
this.validate();
|
|
40
42
|
}
|
|
41
43
|
/**
|
|
@@ -108,6 +110,9 @@ class CommandBusConfig {
|
|
|
108
110
|
if (this.maxRetained < 100) {
|
|
109
111
|
throw new Error('maxRetained must be at least 100');
|
|
110
112
|
}
|
|
113
|
+
if (this.slowHandlerThreshold < 100) {
|
|
114
|
+
throw new Error('slowHandlerThreshold must be at least 100ms');
|
|
115
|
+
}
|
|
111
116
|
}
|
|
112
117
|
/**
|
|
113
118
|
* Parsuje string na liczbę z wartością domyślną
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-bus-config.js","sourceRoot":"","sources":["../../../src/command-bus/config/command-bus-config.ts"],"names":[],"mappings":";;AAAA,2BAA0C;AAI1C,wDAAqD;AAErD;;;;;GAKG;AACH,MAAqB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"command-bus-config.js","sourceRoot":"","sources":["../../../src/command-bus/config/command-bus-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,6 +42,10 @@ export default class CommandBus {
|
|
|
42
42
|
* CommandLogger — opcjonalny logger komend do plików
|
|
43
43
|
*/
|
|
44
44
|
private commandLogger?;
|
|
45
|
+
/**
|
|
46
|
+
* Interceptor wydajności - mierzy czas wykonania handlerów
|
|
47
|
+
*/
|
|
48
|
+
private readonly performanceInterceptor;
|
|
45
49
|
/**
|
|
46
50
|
* Promises z transport.consume() — do graceful shutdown
|
|
47
51
|
*/
|
|
@@ -17,6 +17,7 @@ const transport_1 = require("./transport");
|
|
|
17
17
|
const connection_pool_1 = __importDefault(require("../shared/redis/connection-pool"));
|
|
18
18
|
const rpc_connection_pool_1 = __importDefault(require("../shared/redis/rpc-connection-pool"));
|
|
19
19
|
const logging_1 = require("./logging");
|
|
20
|
+
const interceptors_1 = require("./interceptors");
|
|
20
21
|
const error_utils_1 = require("../shared/utils/error-utils");
|
|
21
22
|
/**
|
|
22
23
|
* Command Bus oparty na Redis Streams + DragonflyDB
|
|
@@ -69,6 +70,8 @@ class CommandBus {
|
|
|
69
70
|
redisOptions,
|
|
70
71
|
logger: this.logger,
|
|
71
72
|
});
|
|
73
|
+
// Interceptor wydajności z konfiguracją
|
|
74
|
+
this.performanceInterceptor = new interceptors_1.PerformanceInterceptor(this.logger, config.slowHandlerThreshold);
|
|
72
75
|
// Transport: Redis Streams
|
|
73
76
|
this.transport = new transport_1.RedisStreamsTransport({
|
|
74
77
|
pool: this.connectionPool,
|
|
@@ -80,12 +83,15 @@ class CommandBus {
|
|
|
80
83
|
claimTimeout: config.claimTimeout,
|
|
81
84
|
batchSize: config.batchSize,
|
|
82
85
|
concurrency: config.concurrency,
|
|
86
|
+
interceptor: this.performanceInterceptor,
|
|
83
87
|
});
|
|
84
88
|
// CommandLogger jeśli commandLog jest skonfigurowane
|
|
85
89
|
if (this.config.commandLog) {
|
|
86
90
|
this.commandLogger = new logging_1.CommandLogger(this.config.commandLog, this.logger);
|
|
87
91
|
}
|
|
88
|
-
this.logger.
|
|
92
|
+
this.logger.log('CommandBus gotowy do użycia', {
|
|
93
|
+
poolSize: this.config.poolSize,
|
|
94
|
+
maxConcurrentRpc: this.config.maxConcurrentRpc,
|
|
89
95
|
timestamp: new Date().toISOString(),
|
|
90
96
|
});
|
|
91
97
|
}
|
|
@@ -196,16 +202,19 @@ class CommandBus {
|
|
|
196
202
|
timeout: `${timeout}ms`,
|
|
197
203
|
timestamp,
|
|
198
204
|
});
|
|
205
|
+
const startTime = Date.now();
|
|
199
206
|
const data = this.serializer.serialize(command);
|
|
200
207
|
const resultBuffer = yield this.transport.rpcCall(commandName, data, timeout);
|
|
208
|
+
const duration = Date.now() - startTime;
|
|
201
209
|
// Deserializuj odpowiedź RPC
|
|
202
210
|
const response = this.serializer.deserialize(resultBuffer);
|
|
203
211
|
if (response.error) {
|
|
204
212
|
throw new Error(response.error);
|
|
205
213
|
}
|
|
206
|
-
this.logger.
|
|
214
|
+
this.logger.log('Wywołanie RPC zakończone', {
|
|
207
215
|
commandName,
|
|
208
216
|
commandId: correlationId,
|
|
217
|
+
duration,
|
|
209
218
|
timestamp: new Date().toISOString(),
|
|
210
219
|
});
|
|
211
220
|
return response.result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,mDAAoD;AAEpD,2CAAoD;AAEpD,sFAAkE;AAClE,8FAAoE;AACpE,uCAA0C;AAC1C,6DAA8D;AAE9D;;;;;;;;;;;GAWG;AACH,MAAqB,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command-bus/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* Export publiczny interceptorów
|
|
19
|
+
*/
|
|
20
|
+
__exportStar(require("./interceptor.interface"), exports);
|
|
21
|
+
__exportStar(require("./performance-interceptor"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/command-bus/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,0DAAwC;AACxC,4DAA0C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context przetwarzania komendy - przekazywany do interceptora
|
|
3
|
+
*/
|
|
4
|
+
export interface CommandExecutionContext {
|
|
5
|
+
commandId: string;
|
|
6
|
+
commandName: string;
|
|
7
|
+
streamName: string;
|
|
8
|
+
messageId: string;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Wynik wykonania handlera - zwracany przez interceptor
|
|
13
|
+
*/
|
|
14
|
+
export interface CommandExecutionResult<T = unknown> {
|
|
15
|
+
result: T;
|
|
16
|
+
duration: number;
|
|
17
|
+
success: boolean;
|
|
18
|
+
error?: Error;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Interface interceptora komend
|
|
22
|
+
*
|
|
23
|
+
* Interceptor umożliwia dodanie logiki przed/po wykonaniu handlera
|
|
24
|
+
* bez naruszania SRP MessageProcessor.
|
|
25
|
+
*/
|
|
26
|
+
export interface ICommandInterceptor {
|
|
27
|
+
/**
|
|
28
|
+
* Wykonuje handler z logiką interceptora
|
|
29
|
+
*
|
|
30
|
+
* @param context - Kontekst wykonania komendy
|
|
31
|
+
* @param handler - Handler do wykonania
|
|
32
|
+
* @param commandData - Dane komendy
|
|
33
|
+
*/
|
|
34
|
+
intercept<T>(context: CommandExecutionContext, handler: (data: Buffer) => Promise<T>, commandData: Buffer): Promise<CommandExecutionResult<T>>;
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptor.interface.js","sourceRoot":"","sources":["../../../src/command-bus/interceptors/interceptor.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ILogger } from '../../shared/types';
|
|
2
|
+
import type { ICommandInterceptor, CommandExecutionContext, CommandExecutionResult } from './interceptor.interface';
|
|
3
|
+
/**
|
|
4
|
+
* Interceptor mierzący czas wykonania handlera
|
|
5
|
+
*
|
|
6
|
+
* Odpowiedzialności (SRP):
|
|
7
|
+
* - Pomiar czasu wykonania handlera
|
|
8
|
+
* - Logowanie metryk wydajności
|
|
9
|
+
* - Obsługa błędów z zachowaniem kontekstu
|
|
10
|
+
*
|
|
11
|
+
* NIE odpowiada za:
|
|
12
|
+
* - Przetwarzanie komendy (MessageProcessor)
|
|
13
|
+
* - XACK/XTRIM (MessageProcessor)
|
|
14
|
+
* - Deduplicję (StreamConsumer)
|
|
15
|
+
*/
|
|
16
|
+
export declare class PerformanceInterceptor implements ICommandInterceptor {
|
|
17
|
+
private readonly logger;
|
|
18
|
+
private readonly slowThreshold;
|
|
19
|
+
constructor(logger: ILogger, slowThreshold?: number);
|
|
20
|
+
/**
|
|
21
|
+
* Wykonuje handler z pomiarem czasu
|
|
22
|
+
*/
|
|
23
|
+
intercept<T>(context: CommandExecutionContext, handler: (data: Buffer) => Promise<T>, commandData: Buffer): Promise<CommandExecutionResult<T>>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PerformanceInterceptor = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* Interceptor mierzący czas wykonania handlera
|
|
15
|
+
*
|
|
16
|
+
* Odpowiedzialności (SRP):
|
|
17
|
+
* - Pomiar czasu wykonania handlera
|
|
18
|
+
* - Logowanie metryk wydajności
|
|
19
|
+
* - Obsługa błędów z zachowaniem kontekstu
|
|
20
|
+
*
|
|
21
|
+
* NIE odpowiada za:
|
|
22
|
+
* - Przetwarzanie komendy (MessageProcessor)
|
|
23
|
+
* - XACK/XTRIM (MessageProcessor)
|
|
24
|
+
* - Deduplicję (StreamConsumer)
|
|
25
|
+
*/
|
|
26
|
+
class PerformanceInterceptor {
|
|
27
|
+
constructor(logger, slowThreshold = 1000) {
|
|
28
|
+
this.logger = logger;
|
|
29
|
+
this.slowThreshold = slowThreshold;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Wykonuje handler z pomiarem czasu
|
|
33
|
+
*/
|
|
34
|
+
intercept(context, handler, commandData) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const startTime = performance.now();
|
|
37
|
+
try {
|
|
38
|
+
const result = yield handler(commandData);
|
|
39
|
+
const duration = Math.round(performance.now() - startTime);
|
|
40
|
+
// KOMPROMIS: Log tylko jeśli przekroczono próg (unikanie log spam)
|
|
41
|
+
if (duration >= this.slowThreshold) {
|
|
42
|
+
this.logger.warn('Wolne wykonanie handlera', {
|
|
43
|
+
commandId: context.commandId,
|
|
44
|
+
commandName: context.commandName,
|
|
45
|
+
duration,
|
|
46
|
+
threshold: this.slowThreshold,
|
|
47
|
+
timestamp: new Date().toISOString(),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Zawsze loguj na debug (dla profiling)
|
|
51
|
+
this.logger.debug('Handler wykonany', {
|
|
52
|
+
commandId: context.commandId,
|
|
53
|
+
commandName: context.commandName,
|
|
54
|
+
streamName: context.streamName,
|
|
55
|
+
messageId: context.messageId,
|
|
56
|
+
duration,
|
|
57
|
+
timestamp: new Date().toISOString(),
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
result,
|
|
61
|
+
duration,
|
|
62
|
+
success: true,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const duration = Math.round(performance.now() - startTime);
|
|
67
|
+
// Błędy loguj na debug (ERROR już jest w StreamConsumer)
|
|
68
|
+
this.logger.debug('Handler zakończony błędem', {
|
|
69
|
+
commandId: context.commandId,
|
|
70
|
+
commandName: context.commandName,
|
|
71
|
+
duration,
|
|
72
|
+
error: error instanceof Error ? error.message : String(error),
|
|
73
|
+
timestamp: new Date().toISOString(),
|
|
74
|
+
});
|
|
75
|
+
return {
|
|
76
|
+
result: undefined,
|
|
77
|
+
duration,
|
|
78
|
+
success: false,
|
|
79
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.PerformanceInterceptor = PerformanceInterceptor;
|
|
86
|
+
//# sourceMappingURL=performance-interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-interceptor.js","sourceRoot":"","sources":["../../../src/command-bus/interceptors/performance-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA;;;;;;;;;;;;GAYG;AACH,MAAa,sBAAsB;IACjC,YACmB,MAAe,EACf,gBAAwB,IAAI;QAD5B,WAAM,GAAN,MAAM,CAAS;QACf,kBAAa,GAAb,aAAa,CAAe;IAC5C,CAAC;IAEJ;;OAEG;IACG,SAAS,CACb,OAAgC,EAChC,OAAqC,EACrC,WAAmB;;YAEnB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;gBAE3D,mEAAmE;gBACnE,IAAI,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;wBAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;wBAChC,QAAQ;wBACR,SAAS,EAAE,IAAI,CAAC,aAAa;wBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACpC,CAAC,CAAC;gBACL,CAAC;gBAED,wCAAwC;gBACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE;oBACpC,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,QAAQ;oBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,OAAO;oBACL,MAAM;oBACN,QAAQ;oBACR,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;gBAE3D,yDAAyD;gBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;oBAC7C,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,QAAQ;oBACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,OAAO;oBACL,MAAM,EAAE,SAAc;oBACtB,QAAQ;oBACR,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjE,CAAC;YACJ,CAAC;QACH,CAAC;KAAA;CACF;AAlED,wDAkEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const performance_interceptor_1 = require("./performance-interceptor");
|
|
13
|
+
describe('PerformanceInterceptor', () => {
|
|
14
|
+
let logger;
|
|
15
|
+
let interceptor;
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
logger = {
|
|
18
|
+
log: jest.fn(),
|
|
19
|
+
warn: jest.fn(),
|
|
20
|
+
error: jest.fn(),
|
|
21
|
+
debug: jest.fn(),
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
describe('intercept()', () => {
|
|
25
|
+
it('powinien zmierzyć czas wykonania handlera', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
interceptor = new performance_interceptor_1.PerformanceInterceptor(logger, 1000);
|
|
27
|
+
const context = {
|
|
28
|
+
commandId: 'test-id',
|
|
29
|
+
commandName: 'TestCommand',
|
|
30
|
+
streamName: 'cmd:TestCommand',
|
|
31
|
+
messageId: '1234-0',
|
|
32
|
+
timestamp: Date.now(),
|
|
33
|
+
};
|
|
34
|
+
const handler = jest.fn().mockResolvedValue('result');
|
|
35
|
+
const data = Buffer.from('test');
|
|
36
|
+
const result = yield interceptor.intercept(context, handler, data);
|
|
37
|
+
expect(result.success).toBe(true);
|
|
38
|
+
expect(result.result).toBe('result');
|
|
39
|
+
expect(result.duration).toBeGreaterThanOrEqual(0);
|
|
40
|
+
expect(handler).toHaveBeenCalledWith(data);
|
|
41
|
+
expect(logger.debug).toHaveBeenCalledWith('Handler wykonany', expect.objectContaining({
|
|
42
|
+
commandId: 'test-id',
|
|
43
|
+
commandName: 'TestCommand',
|
|
44
|
+
duration: expect.any(Number),
|
|
45
|
+
}));
|
|
46
|
+
}));
|
|
47
|
+
it('powinien zalogować ostrzeżenie gdy handler jest wolny', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
interceptor = new performance_interceptor_1.PerformanceInterceptor(logger, 10); // próg 10ms
|
|
49
|
+
const context = {
|
|
50
|
+
commandId: 'test-id',
|
|
51
|
+
commandName: 'SlowCommand',
|
|
52
|
+
streamName: 'cmd:SlowCommand',
|
|
53
|
+
messageId: '1234-0',
|
|
54
|
+
timestamp: Date.now(),
|
|
55
|
+
};
|
|
56
|
+
const handler = jest.fn().mockImplementation(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
+
yield new Promise((resolve) => setTimeout(resolve, 50)); // 50ms delay
|
|
58
|
+
return 'result';
|
|
59
|
+
}));
|
|
60
|
+
const data = Buffer.from('test');
|
|
61
|
+
yield interceptor.intercept(context, handler, data);
|
|
62
|
+
expect(logger.warn).toHaveBeenCalledWith('Wolne wykonanie handlera', expect.objectContaining({
|
|
63
|
+
commandId: 'test-id',
|
|
64
|
+
commandName: 'SlowCommand',
|
|
65
|
+
threshold: 10,
|
|
66
|
+
}));
|
|
67
|
+
}));
|
|
68
|
+
it('powinien obsłużyć błąd handlera', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
69
|
+
interceptor = new performance_interceptor_1.PerformanceInterceptor(logger, 1000);
|
|
70
|
+
const context = {
|
|
71
|
+
commandId: 'test-id',
|
|
72
|
+
commandName: 'ErrorCommand',
|
|
73
|
+
streamName: 'cmd:ErrorCommand',
|
|
74
|
+
messageId: '1234-0',
|
|
75
|
+
timestamp: Date.now(),
|
|
76
|
+
};
|
|
77
|
+
const error = new Error('Test error');
|
|
78
|
+
const handler = jest.fn().mockRejectedValue(error);
|
|
79
|
+
const data = Buffer.from('test');
|
|
80
|
+
const result = yield interceptor.intercept(context, handler, data);
|
|
81
|
+
expect(result.success).toBe(false);
|
|
82
|
+
expect(result.error).toBe(error);
|
|
83
|
+
expect(result.duration).toBeGreaterThanOrEqual(0);
|
|
84
|
+
expect(logger.debug).toHaveBeenCalledWith('Handler zakończony błędem', expect.objectContaining({
|
|
85
|
+
commandId: 'test-id',
|
|
86
|
+
commandName: 'ErrorCommand',
|
|
87
|
+
error: 'Test error',
|
|
88
|
+
}));
|
|
89
|
+
}));
|
|
90
|
+
it('powinien obsłużyć non-Error exception', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
var _a;
|
|
92
|
+
interceptor = new performance_interceptor_1.PerformanceInterceptor(logger, 1000);
|
|
93
|
+
const context = {
|
|
94
|
+
commandId: 'test-id',
|
|
95
|
+
commandName: 'StringErrorCommand',
|
|
96
|
+
streamName: 'cmd:StringErrorCommand',
|
|
97
|
+
messageId: '1234-0',
|
|
98
|
+
timestamp: Date.now(),
|
|
99
|
+
};
|
|
100
|
+
const handler = jest.fn().mockRejectedValue('string error');
|
|
101
|
+
const data = Buffer.from('test');
|
|
102
|
+
const result = yield interceptor.intercept(context, handler, data);
|
|
103
|
+
expect(result.success).toBe(false);
|
|
104
|
+
expect(result.error).toBeInstanceOf(Error);
|
|
105
|
+
expect((_a = result.error) === null || _a === void 0 ? void 0 : _a.message).toBe('string error');
|
|
106
|
+
}));
|
|
107
|
+
it('nie powinien logować ostrzeżenia gdy handler jest szybki', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
interceptor = new performance_interceptor_1.PerformanceInterceptor(logger, 1000);
|
|
109
|
+
const context = {
|
|
110
|
+
commandId: 'test-id',
|
|
111
|
+
commandName: 'FastCommand',
|
|
112
|
+
streamName: 'cmd:FastCommand',
|
|
113
|
+
messageId: '1234-0',
|
|
114
|
+
timestamp: Date.now(),
|
|
115
|
+
};
|
|
116
|
+
const handler = jest.fn().mockResolvedValue('result');
|
|
117
|
+
const data = Buffer.from('test');
|
|
118
|
+
yield interceptor.intercept(context, handler, data);
|
|
119
|
+
expect(logger.warn).not.toHaveBeenCalled();
|
|
120
|
+
expect(logger.debug).toHaveBeenCalledWith('Handler wykonany', expect.any(Object));
|
|
121
|
+
}));
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=performance-interceptor.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-interceptor.spec.js","sourceRoot":"","sources":["../../../src/command-bus/interceptors/performance-interceptor.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uEAAmE;AAInE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,MAAe,CAAC;IACpB,IAAI,WAAmC,CAAC;IAExC,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;YAChB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACzD,WAAW,GAAG,IAAI,gDAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAA4B;gBACvC,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,aAAa;gBAC1B,UAAU,EAAE,iBAAiB;gBAC7B,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aAC7B,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;YACrE,WAAW,GAAG,IAAI,gDAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY;YAClE,MAAM,OAAO,GAA4B;gBACvC,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,aAAa;gBAC1B,UAAU,EAAE,iBAAiB;gBAC7B,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAS,EAAE;gBACtD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa;gBACtE,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAA,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAEpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,0BAA0B,EAC1B,MAAM,CAAC,gBAAgB,CAAC;gBACtB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,aAAa;gBAC1B,SAAS,EAAE,EAAE;aACd,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;YAC/C,WAAW,GAAG,IAAI,gDAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAA4B;gBACvC,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,cAAc;gBAC3B,UAAU,EAAE,kBAAkB;gBAC9B,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,2BAA2B,EAC3B,MAAM,CAAC,gBAAgB,CAAC;gBACtB,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE,YAAY;aACpB,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;;YACrD,WAAW,GAAG,IAAI,gDAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAA4B;gBACvC,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,oBAAoB;gBACjC,UAAU,EAAE,wBAAwB;gBACpC,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAS,EAAE;YACxE,WAAW,GAAG,IAAI,gDAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,OAAO,GAA4B;gBACvC,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,aAAa;gBAC1B,UAAU,EAAE,iBAAiB;gBAC7B,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,MAAM,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAEpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { ILogger } from '../../shared/types';
|
|
|
2
2
|
import type { ISerializer } from '../serialization/serializer.interface';
|
|
3
3
|
import type { ConsumerHandler } from './transport.interface';
|
|
4
4
|
import type RedisConnectionPool from '../../shared/redis/connection-pool';
|
|
5
|
+
import type { ICommandInterceptor } from '../interceptors';
|
|
5
6
|
/**
|
|
6
7
|
* Typ callbacka do wysyłania odpowiedzi RPC
|
|
7
8
|
*/
|
|
@@ -16,6 +17,7 @@ export interface MessageProcessorOptions {
|
|
|
16
17
|
batchSize: number;
|
|
17
18
|
maxRetained: number;
|
|
18
19
|
rpcRespond: RpcResponder;
|
|
20
|
+
interceptor?: ICommandInterceptor;
|
|
19
21
|
}
|
|
20
22
|
/**
|
|
21
23
|
* Procesor wiadomości — parsuje, waliduje, przetwarza i potwierdza wiadomości
|
|
@@ -37,6 +39,7 @@ export declare class MessageProcessor {
|
|
|
37
39
|
private readonly batchSize;
|
|
38
40
|
private readonly maxRetained;
|
|
39
41
|
private readonly rpcRespond;
|
|
42
|
+
private readonly interceptor?;
|
|
40
43
|
/** H2: Liczniki wiadomości od ostatniego XTRIM — per strumień */
|
|
41
44
|
private readonly xtrimCounters;
|
|
42
45
|
constructor(options: MessageProcessorOptions);
|
|
@@ -56,4 +59,12 @@ export declare class MessageProcessor {
|
|
|
56
59
|
* @param handler - Handler przetwarzający dane komendy
|
|
57
60
|
*/
|
|
58
61
|
process(streamName: string, groupName: string, messageId: string, fields: string[], handler: ConsumerHandler): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Ekstrakcja commandId z commandData (deserializacja metadata)
|
|
64
|
+
*/
|
|
65
|
+
private extractCommandId;
|
|
66
|
+
/**
|
|
67
|
+
* Ekstrakcja nazwy komendy ze streamName (usunięcie prefiksu 'cmd:')
|
|
68
|
+
*/
|
|
69
|
+
private extractCommandName;
|
|
59
70
|
}
|
|
@@ -34,6 +34,7 @@ class MessageProcessor {
|
|
|
34
34
|
this.batchSize = options.batchSize;
|
|
35
35
|
this.maxRetained = options.maxRetained;
|
|
36
36
|
this.rpcRespond = options.rpcRespond;
|
|
37
|
+
this.interceptor = options.interceptor;
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
40
|
* Czyści stan counters — wywoływane przy close()
|
|
@@ -85,7 +86,34 @@ class MessageProcessor {
|
|
|
85
86
|
else {
|
|
86
87
|
commandData = dataBuffer;
|
|
87
88
|
}
|
|
88
|
-
|
|
89
|
+
// Extract commandId from commandData for correlation
|
|
90
|
+
const commandId = this.extractCommandId(commandData);
|
|
91
|
+
let result;
|
|
92
|
+
if (this.interceptor) {
|
|
93
|
+
// Wykonaj przez interceptor
|
|
94
|
+
const execResult = yield this.interceptor.intercept({
|
|
95
|
+
commandId,
|
|
96
|
+
commandName: this.extractCommandName(streamName),
|
|
97
|
+
streamName,
|
|
98
|
+
messageId,
|
|
99
|
+
timestamp: Date.now(),
|
|
100
|
+
}, handler, commandData);
|
|
101
|
+
if (!execResult.success && execResult.error) {
|
|
102
|
+
throw execResult.error;
|
|
103
|
+
}
|
|
104
|
+
result = execResult.result;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Wykonaj bezpośrednio (backwards compatible)
|
|
108
|
+
result = yield handler(commandData);
|
|
109
|
+
}
|
|
110
|
+
// Log success
|
|
111
|
+
this.logger.log('Komenda przetworzona', {
|
|
112
|
+
streamName,
|
|
113
|
+
messageId,
|
|
114
|
+
commandId,
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
});
|
|
89
117
|
// H2: XACK + throttled XTRIM per strumień
|
|
90
118
|
const count = ((_a = this.xtrimCounters.get(streamName)) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
91
119
|
this.xtrimCounters.set(streamName, count);
|
|
@@ -106,6 +134,25 @@ class MessageProcessor {
|
|
|
106
134
|
}
|
|
107
135
|
});
|
|
108
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Ekstrakcja commandId z commandData (deserializacja metadata)
|
|
139
|
+
*/
|
|
140
|
+
extractCommandId(data) {
|
|
141
|
+
var _a;
|
|
142
|
+
try {
|
|
143
|
+
const cmd = this.serializer.deserialize(data);
|
|
144
|
+
return (_a = cmd.__id) !== null && _a !== void 0 ? _a : 'unknown';
|
|
145
|
+
}
|
|
146
|
+
catch (_b) {
|
|
147
|
+
return 'unknown';
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Ekstrakcja nazwy komendy ze streamName (usunięcie prefiksu 'cmd:')
|
|
152
|
+
*/
|
|
153
|
+
extractCommandName(streamName) {
|
|
154
|
+
return streamName.replace('cmd:', '');
|
|
155
|
+
}
|
|
109
156
|
}
|
|
110
157
|
exports.MessageProcessor = MessageProcessor;
|
|
111
158
|
//# sourceMappingURL=message-processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-processor.js","sourceRoot":"","sources":["../../../src/command-bus/transport/message-processor.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"message-processor.js","sourceRoot":"","sources":["../../../src/command-bus/transport/message-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import type { ISerializer } from '../serialization/serializer.interface';
|
|
|
3
3
|
import type { ITransport, ConsumerHandler } from './transport.interface';
|
|
4
4
|
import type RedisConnectionPool from '../../shared/redis/connection-pool';
|
|
5
5
|
import type RpcConnectionPool from '../../shared/redis/rpc-connection-pool';
|
|
6
|
+
import type { ICommandInterceptor } from '../interceptors';
|
|
6
7
|
/**
|
|
7
8
|
* Opcje konfiguracji RedisStreamsTransport
|
|
8
9
|
*/
|
|
@@ -25,6 +26,8 @@ export interface RedisStreamsTransportOptions {
|
|
|
25
26
|
batchSize: number;
|
|
26
27
|
/** Maksymalna liczba wiadomości przetwarzanych równolegle per konsument */
|
|
27
28
|
concurrency: number;
|
|
29
|
+
/** Interceptor przechwytujący wykonanie handlera */
|
|
30
|
+
interceptor?: ICommandInterceptor;
|
|
28
31
|
}
|
|
29
32
|
/**
|
|
30
33
|
* Fasada transportu Redis Streams dla CommandBus
|
|
@@ -43,6 +43,7 @@ class RedisStreamsTransport {
|
|
|
43
43
|
concurrency: options.concurrency,
|
|
44
44
|
maxRetained: options.maxRetained,
|
|
45
45
|
rpcRespond: this.rpc.rpcRespond.bind(this.rpc),
|
|
46
|
+
interceptor: options.interceptor,
|
|
46
47
|
});
|
|
47
48
|
this.recovery = new pending_recovery_1.PendingRecovery({
|
|
48
49
|
pool: options.pool,
|
|
@@ -51,6 +52,14 @@ class RedisStreamsTransport {
|
|
|
51
52
|
maxAttempts: options.maxAttempts,
|
|
52
53
|
claimTimeout: options.claimTimeout,
|
|
53
54
|
});
|
|
55
|
+
// Log inicjalizacji transportu
|
|
56
|
+
this.logger.log('Transport Redis Streams zainicjalizowany', {
|
|
57
|
+
consumerId: this.consumerId,
|
|
58
|
+
poolSize: options.pool.size,
|
|
59
|
+
maxRetained: options.maxRetained,
|
|
60
|
+
concurrency: options.concurrency,
|
|
61
|
+
timestamp: new Date().toISOString(),
|
|
62
|
+
});
|
|
54
63
|
}
|
|
55
64
|
/**
|
|
56
65
|
* Dodaje komendę do strumienia (fire-and-forget)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-streams-transport.js","sourceRoot":"","sources":["../../../src/command-bus/transport/redis-streams-transport.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAoC;
|
|
1
|
+
{"version":3,"file":"redis-streams-transport.js","sourceRoot":"","sources":["../../../src/command-bus/transport/redis-streams-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { ILogger } from '../../shared/types';
|
|
|
2
2
|
import type { ISerializer } from '../serialization/serializer.interface';
|
|
3
3
|
import type { IStreamConsumer, ConsumerHandler } from './transport.interface';
|
|
4
4
|
import type RedisConnectionPool from '../../shared/redis/connection-pool';
|
|
5
|
+
import type { ICommandInterceptor } from '../interceptors';
|
|
5
6
|
import type { RpcResponder } from './message-processor';
|
|
6
7
|
/**
|
|
7
8
|
* Konfiguracja StreamConsumer
|
|
@@ -15,6 +16,7 @@ export interface StreamConsumerOptions {
|
|
|
15
16
|
concurrency: number;
|
|
16
17
|
maxRetained: number;
|
|
17
18
|
rpcRespond: RpcResponder;
|
|
19
|
+
interceptor?: ICommandInterceptor;
|
|
18
20
|
/** Próg czasu (ms) po którym wpis w processing Map jest uznawany za stale (domyślnie 300_000 = 5min) */
|
|
19
21
|
staleThreshold?: number;
|
|
20
22
|
/** Minimalny interwał (ms) między sweepami stale wpisów (domyślnie 10_000 = 10s) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-consumer.js","sourceRoot":"","sources":["../../../src/command-bus/transport/stream-consumer.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"stream-consumer.js","sourceRoot":"","sources":["../../../src/command-bus/transport/stream-consumer.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
@@ -91,6 +91,12 @@ class RedisConnectionPool {
|
|
|
91
91
|
* Konfiguruje handlery eventów dla połączenia
|
|
92
92
|
*/
|
|
93
93
|
setupEventHandlers(connection, name, logger) {
|
|
94
|
+
connection.on('ready', () => {
|
|
95
|
+
logger.log(`Połączenie Redis gotowe (${name})`, {
|
|
96
|
+
connectionName: name,
|
|
97
|
+
timestamp: new Date().toISOString(),
|
|
98
|
+
});
|
|
99
|
+
});
|
|
94
100
|
connection.on('error', (error) => {
|
|
95
101
|
logger.error(`Błąd połączenia Redis (${name})`, {
|
|
96
102
|
connectionName: name,
|
|
@@ -100,7 +106,7 @@ class RedisConnectionPool {
|
|
|
100
106
|
});
|
|
101
107
|
});
|
|
102
108
|
connection.on('close', () => {
|
|
103
|
-
logger.
|
|
109
|
+
logger.log(`Połączenie Redis zamknięte (${name})`, {
|
|
104
110
|
connectionName: name,
|
|
105
111
|
timestamp: new Date().toISOString(),
|
|
106
112
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-pool.js","sourceRoot":"","sources":["../../../src/shared/redis/connection-pool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"connection-pool.js","sourceRoot":"","sources":["../../../src/shared/redis/connection-pool.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,qCAAmD;AAEnD,mEAAyE;AAczE;;;;;;;;GAQG;AACH,MAAqB,mBAAmB;IAKtC,YAA6B,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;QAHnD,UAAK,GAAG,CAAC,CAAC;QACV,WAAM,GAAG,KAAK,CAAC;QAGrB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE/C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvD,MAAM,IAAI,GAAG,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;YAC5C,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACI,eAAe,CAAC,IAAY,EAAE,eAAuC;QAC1E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,eAAK,iCAAM,IAAI,CAAC,OAAO,CAAC,YAAY,GAAK,eAAe,EAAG,CAAC;QAC7E,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,aAAa,IAAI,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACjC,CAAC;IAED;;OAEG;IACU,KAAK;;YAChB,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACzD,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;gBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;KAAA;IAED;;OAEG;IACK,kBAAkB,CAAC,UAAiB,EAAE,IAAY,EAAE,MAAe;QACzE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,4BAA4B,IAAI,GAAG,EAAE;gBAC9C,cAAc,EAAE,IAAI;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,GAAG,EAAE;gBAC9C,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE,IAAA,wCAAgB,EAAC,KAAK,CAAC;gBAC9B,SAAS,EAAE,IAAA,oCAAY,EAAC,KAAK,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,MAAM,CAAC,GAAG,CAAC,+BAA+B,IAAI,GAAG,EAAE;gBACjD,cAAc,EAAE,IAAI;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,6BAA6B,IAAI,GAAG,EAAE;gBAC/C,cAAc,EAAE,IAAI;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA7GD,sCA6GC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pp-command-bus",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Distributed Command Bus library with Redis Streams transport, MessagePack serialization, and RPC via LPUSH/BRPOP for DragonflyDB",
|
|
5
5
|
"homepage": "https://gitlab.polskiepolisy.pl/lib/pp-command-bus",
|
|
6
6
|
"repository": {
|
|
Binary file
|