pp-command-bus 1.2.0 → 1.2.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 +6 -0
- package/dist/command-bus/config/command-bus-config.js +4 -0
- package/dist/command-bus/config/command-bus-config.js.map +1 -1
- package/dist/command-bus/index.js +8 -6
- package/dist/command-bus/index.js.map +1 -1
- package/dist/command-bus/job/job-processor.d.ts +4 -2
- package/dist/command-bus/job/job-processor.js +10 -5
- package/dist/command-bus/job/job-processor.js.map +1 -1
- package/dist/command-bus/job/job-processor.spec.js +13 -2
- package/dist/command-bus/job/job-processor.spec.js.map +1 -1
- package/dist/command-bus/rpc/index.d.ts +3 -0
- package/dist/command-bus/rpc/index.js +4 -1
- package/dist/command-bus/rpc/index.js.map +1 -1
- package/dist/command-bus/rpc/payload-compression.service.d.ts +32 -0
- package/dist/command-bus/rpc/payload-compression.service.js +109 -0
- package/dist/command-bus/rpc/payload-compression.service.js.map +1 -0
- package/dist/command-bus/rpc/payload-compression.service.spec.d.ts +1 -0
- package/dist/command-bus/rpc/payload-compression.service.spec.js +233 -0
- package/dist/command-bus/rpc/payload-compression.service.spec.js.map +1 -0
- package/dist/command-bus/rpc/rpc-coordinator.d.ts +22 -26
- package/dist/command-bus/rpc/rpc-coordinator.js +61 -92
- package/dist/command-bus/rpc/rpc-coordinator.js.map +1 -1
- package/dist/command-bus/rpc/rpc-coordinator.spec.js +138 -4
- package/dist/command-bus/rpc/rpc-coordinator.spec.js.map +1 -1
- package/dist/command-bus/types/index.d.ts +1 -0
- package/dist/pp-command-bus-1.2.1.tgz +0 -0
- package/package.json +1 -1
- package/dist/pp-command-bus-1.2.0.tgz +0 -0
|
@@ -29,6 +29,12 @@ export default class CommandBusConfig extends BaseConfig {
|
|
|
29
29
|
* @default true
|
|
30
30
|
*/
|
|
31
31
|
autoOptimize: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Próg kompresji gzip dla payloadów RPC w bajtach
|
|
34
|
+
* Payloady większe niż threshold będą automatycznie kompresowane
|
|
35
|
+
* @default 1024 (1KB)
|
|
36
|
+
*/
|
|
37
|
+
compressionThreshold: number;
|
|
32
38
|
constructor(params?: Partial<CommandBusConfig>);
|
|
33
39
|
/**
|
|
34
40
|
* Waliduje konfigurację specyficzną dla CommandBus
|
|
@@ -23,6 +23,7 @@ class CommandBusConfig extends base_config_1.default {
|
|
|
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
25
|
this.commandLog = (_g = (_f = process.env.COMMAND_BUS_LOG) !== null && _f !== void 0 ? _f : process.env.EVENT_BUS_LOG) !== null && _g !== void 0 ? _g : '';
|
|
26
|
+
this.compressionThreshold = this.parseIntWithDefault(process.env.COMMAND_BUS_COMPRESSION_THRESHOLD, 1024);
|
|
26
27
|
// Wykryj czy concurrency zostało podane jawnie przez params
|
|
27
28
|
const manualConcurrencyFromParams = (params === null || params === void 0 ? void 0 : params.concurrency) !== undefined;
|
|
28
29
|
// Nadpisz wartościami z parametrów konstruktora
|
|
@@ -72,6 +73,9 @@ class CommandBusConfig extends base_config_1.default {
|
|
|
72
73
|
if (this.queueMode !== 'fifo' && this.queueMode !== 'lifo') {
|
|
73
74
|
throw new Error("queueMode must be either 'fifo' or 'lifo'");
|
|
74
75
|
}
|
|
76
|
+
if (this.compressionThreshold < 0) {
|
|
77
|
+
throw new Error('compressionThreshold must be >= 0');
|
|
78
|
+
}
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
exports.default = CommandBusConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-bus-config.js","sourceRoot":"","sources":["../../../src/command-bus/config/command-bus-config.ts"],"names":[],"mappings":";;;;;AAAA,kFAAyD;AACzD,oFAA0D;AAE1D;;GAEG;AACH,MAAqB,gBAAiB,SAAQ,qBAAU;
|
|
1
|
+
{"version":3,"file":"command-bus-config.js","sourceRoot":"","sources":["../../../src/command-bus/config/command-bus-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,16 +46,18 @@ class CommandBus {
|
|
|
46
46
|
this.rpcRedisConnection = new ioredis_1.Redis(this.config.getRedisOptionsForWorker());
|
|
47
47
|
// Utwórz QueueManager z własnym Redis connection
|
|
48
48
|
this.queueManager = new queue_1.QueueManager(this.queueRedisConnection, this.logger);
|
|
49
|
-
// Utwórz
|
|
50
|
-
|
|
49
|
+
// Utwórz PayloadCompressionService z threshold z konfiguracji
|
|
50
|
+
const compressionService = new rpc_1.PayloadCompressionService(this.config.compressionThreshold, this.logger);
|
|
51
|
+
// Utwórz RpcCoordinator z PayloadCompressionService (używa Pub/Sub)
|
|
52
|
+
this.rpcCoordinator = new rpc_1.RpcCoordinator(this.logger, this.rpcRedisConnection, compressionService);
|
|
51
53
|
// Utwórz JobOptionsBuilder
|
|
52
54
|
this.jobOptionsBuilder = new job_1.JobOptionsBuilder(this.config);
|
|
53
55
|
// Utwórz CommandLogger jeśli commandLog jest skonfigurowane
|
|
54
56
|
if (this.config.commandLog) {
|
|
55
57
|
this.commandLogger = new logging_1.CommandLogger(this.config.commandLog, this.logger);
|
|
56
58
|
}
|
|
57
|
-
// Utwórz JobProcessor z Redis connection dla Pub/Sub
|
|
58
|
-
this.jobProcessor = new job_1.JobProcessor(this.commandHandlers, this.rpcRedisConnection, this.logger, this.jobOptionsBuilder, this.commandLogger);
|
|
59
|
+
// Utwórz JobProcessor z Redis connection dla Pub/Sub i compressionService
|
|
60
|
+
this.jobProcessor = new job_1.JobProcessor(this.commandHandlers, this.rpcRedisConnection, this.logger, this.jobOptionsBuilder, compressionService, this.commandLogger);
|
|
59
61
|
// Utwórz WorkerOrchestrator z własnym Redis connection
|
|
60
62
|
this.workerOrchestrator = new worker_1.WorkerOrchestrator(this.workerRedisConnection, this.jobProcessor, this.queueManager, this.config.concurrency, this.config.maxAttempts, this.logger);
|
|
61
63
|
this.logger.debug('CommandBus gotowy do użycia', {
|
|
@@ -165,8 +167,8 @@ class CommandBus {
|
|
|
165
167
|
yield this.workerOrchestrator.closeAll();
|
|
166
168
|
// Zamknij wszystkie kolejki z cache
|
|
167
169
|
yield this.queueManager.closeAllQueues();
|
|
168
|
-
// Zamknij RpcCoordinator
|
|
169
|
-
|
|
170
|
+
// Zamknij RpcCoordinator (synchroniczne - brak zasobów do wyczyszczenia)
|
|
171
|
+
this.rpcCoordinator.close();
|
|
170
172
|
// Zamknij pozostałe Redis connections
|
|
171
173
|
yield this.queueRedisConnection.quit();
|
|
172
174
|
yield this.workerRedisConnection.quit();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,qCAAmD;AACnD,mCAAuC;AACvC,qCAA8C;AAC9C,+BAAwD;AACxD,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command-bus/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,qCAAmD;AACnD,mCAAuC;AACvC,qCAA8C;AAC9C,+BAAwD;AACxD,+BAAkE;AAClE,uCAA0C;AAE1C;;;GAGG;AACH,MAAqB,UAAU;IAyD7B,YAA2B,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;QAxDnD;;WAEG;QACH,8DAA8D;QACtD,oBAAe,GAAwD,EAAE,CAAC;QAqDhF,0EAA0E;QAC1E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,0EAA0E;QAC1E,IAAI,CAAC,oBAAoB,GAAG,IAAI,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAkB,CAAC,CAAC;QAErF,mFAAmF;QACnF,IAAI,CAAC,qBAAqB,GAAG,IAAI,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAkB,CAAC,CAAC;QAE/F,+EAA+E;QAC/E,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAkB,CAAC,CAAC;QAE5F,iDAAiD;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7E,8DAA8D;QAC9D,MAAM,kBAAkB,GAAG,IAAI,+BAAyB,CACtD,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAChC,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,oEAAoE;QACpE,IAAI,CAAC,cAAc,GAAG,IAAI,oBAAc,CACtC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,kBAAkB,EACvB,kBAAkB,CACnB,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,uBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5D,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,uBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;QAED,0EAA0E;QAC1E,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAY,CAClC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,iBAAiB,EACtB,kBAAkB,EAClB,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,uDAAuD;QACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,2BAAkB,CAC9C,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC/C,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACU,QAAQ,CAAC,OAAgB;;;YACpC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YACnC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACjD,WAAW;gBACX,SAAS;gBACT,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CACzB,WAAW,EACX,OAAO,EACP,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAC9C,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBAC7C,WAAW;gBACX,SAAS;gBACT,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,aAAa,EAAE,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,KAAK,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACrD,SAAS;aACV,CAAC,CAAC;QACL,CAAC;KAAA;IAED;;;;;OAKG;IACI,MAAM;IACX,8DAA8D;IAC9D,iBAA4C,EAC5C,OAAmD;QAEnD,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAE3C,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,eAAe,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;QAC5C,IAAI,CAAC,kBAAkB;aACpB,cAAc,CAAC,WAAW,CAAC;aAC3B,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,WAAW,EAAE,EAAE;gBAC/E,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACU,IAAI;6DAAc,OAAgB,EAAE,UAAkB,KAAK;;YACtE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YACnC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,eAAe,GAAG,gBAAgB,aAAa,EAAE,CAAC;YAExD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE;gBAC3D,WAAW;gBACX,SAAS,EAAE,aAAa;gBACxB,eAAe;gBACf,OAAO,EAAE,GAAG,OAAO,IAAI;gBACvB,SAAS;aACV,CAAC,CAAC;YAEH,sEAAsE;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAI,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAEzF,2DAA2D;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAC5F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CACzB,WAAW,EACX,mBAAmB,EACnB,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAC9C,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACjD,WAAW;gBACX,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,eAAe;gBACf,aAAa,EAAE,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,KAAK,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;gBACrD,SAAS;aACV,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAED;;;OAGG;IACU,KAAK;;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YAEzC,oCAAoC;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAEzC,yEAAyE;YACzE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAE5B,sCAAsC;YACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;KAAA;CACF;AA/PD,6BA+PC;AAED,6CAA6C;AAC7C,iCAAgD;AAAvC,oHAAA,OAAO,OAAc;AAC9B,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAC3B,kEAA0E;AAAjE,uIAAA,OAAO,OAAoB"}
|
|
@@ -3,6 +3,7 @@ import type { Redis } from 'ioredis';
|
|
|
3
3
|
import type { TDict, ILogger } from '../../shared/types';
|
|
4
4
|
import type JobOptionsBuilder from './job-options-builder';
|
|
5
5
|
import type CommandLogger from '../logging/command-logger';
|
|
6
|
+
import type PayloadCompressionService from '../rpc/payload-compression.service';
|
|
6
7
|
/**
|
|
7
8
|
* Przetwarza joby z kolejek BullMQ
|
|
8
9
|
* Odpowiada za wykonanie handlerów komend i obsługę odpowiedzi RPC przez Redis Pub/Sub
|
|
@@ -12,8 +13,9 @@ export default class JobProcessor {
|
|
|
12
13
|
private readonly redisConnection;
|
|
13
14
|
private readonly logger;
|
|
14
15
|
private readonly jobOptionsBuilder;
|
|
16
|
+
private readonly compressionService;
|
|
15
17
|
private readonly commandLogger?;
|
|
16
|
-
constructor(commandHandlers: TDict<(command: any) => unknown | Promise<unknown>>, redisConnection: Redis, logger: ILogger, jobOptionsBuilder: JobOptionsBuilder, commandLogger?: CommandLogger | undefined);
|
|
18
|
+
constructor(commandHandlers: TDict<(command: any) => unknown | Promise<unknown>>, redisConnection: Redis, logger: ILogger, jobOptionsBuilder: JobOptionsBuilder, compressionService: PayloadCompressionService, commandLogger?: CommandLogger | undefined);
|
|
17
19
|
/**
|
|
18
20
|
* Przetwarza job z kolejki
|
|
19
21
|
* @param job - Job do przetworzenia
|
|
@@ -21,7 +23,7 @@ export default class JobProcessor {
|
|
|
21
23
|
*/
|
|
22
24
|
process(job: Job, commandName: string): Promise<unknown>;
|
|
23
25
|
/**
|
|
24
|
-
* Wysyła odpowiedź RPC do nadawcy przez Redis Pub/Sub
|
|
26
|
+
* Wysyła odpowiedź RPC do nadawcy przez Redis Pub/Sub z kompresją gzip
|
|
25
27
|
* Publikuje na dedykowanym kanale dla tego wywołania RPC
|
|
26
28
|
*/
|
|
27
29
|
private sendRpcResponse;
|
|
@@ -20,11 +20,12 @@ const command_1 = __importDefault(require("../command"));
|
|
|
20
20
|
class JobProcessor {
|
|
21
21
|
constructor(
|
|
22
22
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
-
commandHandlers, redisConnection, logger, jobOptionsBuilder, commandLogger) {
|
|
23
|
+
commandHandlers, redisConnection, logger, jobOptionsBuilder, compressionService, commandLogger) {
|
|
24
24
|
this.commandHandlers = commandHandlers;
|
|
25
25
|
this.redisConnection = redisConnection;
|
|
26
26
|
this.logger = logger;
|
|
27
27
|
this.jobOptionsBuilder = jobOptionsBuilder;
|
|
28
|
+
this.compressionService = compressionService;
|
|
28
29
|
this.commandLogger = commandLogger;
|
|
29
30
|
}
|
|
30
31
|
/**
|
|
@@ -108,23 +109,27 @@ class JobProcessor {
|
|
|
108
109
|
});
|
|
109
110
|
}
|
|
110
111
|
/**
|
|
111
|
-
* Wysyła odpowiedź RPC do nadawcy przez Redis Pub/Sub
|
|
112
|
+
* Wysyła odpowiedź RPC do nadawcy przez Redis Pub/Sub z kompresją gzip
|
|
112
113
|
* Publikuje na dedykowanym kanale dla tego wywołania RPC
|
|
113
114
|
*/
|
|
114
115
|
sendRpcResponse(rpcMetadata, result, error, commandName) {
|
|
115
116
|
return __awaiter(this, void 0, void 0, function* () {
|
|
116
117
|
try {
|
|
117
|
-
|
|
118
|
+
// Przygotuj payload do kompresji
|
|
119
|
+
const payload = {
|
|
118
120
|
correlationId: rpcMetadata.correlationId,
|
|
119
121
|
result,
|
|
120
122
|
error,
|
|
121
|
-
}
|
|
123
|
+
};
|
|
124
|
+
// Kompresuj payload jeśli przekracza threshold
|
|
125
|
+
const { data, compressed } = yield this.compressionService.compress(payload);
|
|
122
126
|
// Publikuj odpowiedź na kanale Redis Pub/Sub
|
|
123
|
-
yield this.redisConnection.publish(rpcMetadata.responseChannel,
|
|
127
|
+
yield this.redisConnection.publish(rpcMetadata.responseChannel, data);
|
|
124
128
|
this.logger.debug('Odpowiedź RPC opublikowana przez Pub/Sub', {
|
|
125
129
|
commandName,
|
|
126
130
|
correlationId: rpcMetadata.correlationId,
|
|
127
131
|
responseChannel: rpcMetadata.responseChannel,
|
|
132
|
+
compressed,
|
|
128
133
|
timestamp: new Date().toISOString(),
|
|
129
134
|
});
|
|
130
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-processor.js","sourceRoot":"","sources":["../../../src/command-bus/job/job-processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,yDAAiC;
|
|
1
|
+
{"version":3,"file":"job-processor.js","sourceRoot":"","sources":["../../../src/command-bus/job/job-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ describe('JobProcessor', () => {
|
|
|
27
27
|
let mockRedisConnection;
|
|
28
28
|
let mockLogger;
|
|
29
29
|
let mockJobOptionsBuilder;
|
|
30
|
+
let mockCompressionService;
|
|
30
31
|
let mockCommandLogger;
|
|
31
32
|
beforeEach(() => {
|
|
32
33
|
jest.clearAllMocks();
|
|
@@ -42,11 +43,18 @@ describe('JobProcessor', () => {
|
|
|
42
43
|
mockJobOptionsBuilder = {
|
|
43
44
|
buildRpcReplyOptions: jest.fn().mockReturnValue({}),
|
|
44
45
|
};
|
|
46
|
+
mockCompressionService = {
|
|
47
|
+
compress: jest.fn().mockImplementation((payload) => Promise.resolve({
|
|
48
|
+
data: JSON.stringify(payload),
|
|
49
|
+
compressed: false,
|
|
50
|
+
})),
|
|
51
|
+
decompress: jest.fn().mockResolvedValue({}),
|
|
52
|
+
};
|
|
45
53
|
mockCommandLogger = {
|
|
46
54
|
logCommand: jest.fn().mockResolvedValue(undefined),
|
|
47
55
|
};
|
|
48
56
|
mockCommandHandlers = {};
|
|
49
|
-
jobProcessor = new job_processor_1.default(mockCommandHandlers, mockRedisConnection, mockLogger, mockJobOptionsBuilder, mockCommandLogger);
|
|
57
|
+
jobProcessor = new job_processor_1.default(mockCommandHandlers, mockRedisConnection, mockLogger, mockJobOptionsBuilder, mockCompressionService, mockCommandLogger);
|
|
50
58
|
});
|
|
51
59
|
describe('process - standardowy job', () => {
|
|
52
60
|
it('powinno przetworzyć komendę i wywołać handler', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -144,6 +152,7 @@ describe('JobProcessor', () => {
|
|
|
144
152
|
correlationId: 'correlation-123',
|
|
145
153
|
responseChannel: 'rpc:response:test',
|
|
146
154
|
timestamp: Date.now(),
|
|
155
|
+
compressed: true,
|
|
147
156
|
};
|
|
148
157
|
const job = {
|
|
149
158
|
id: 'job-123',
|
|
@@ -176,6 +185,7 @@ describe('JobProcessor', () => {
|
|
|
176
185
|
correlationId: 'correlation-123',
|
|
177
186
|
responseChannel: 'rpc:response:test',
|
|
178
187
|
timestamp: Date.now(),
|
|
188
|
+
compressed: true,
|
|
179
189
|
};
|
|
180
190
|
const job = {
|
|
181
191
|
id: 'job-123',
|
|
@@ -203,6 +213,7 @@ describe('JobProcessor', () => {
|
|
|
203
213
|
correlationId: 'correlation-123',
|
|
204
214
|
responseChannel: 'rpc:response:test',
|
|
205
215
|
timestamp: Date.now(),
|
|
216
|
+
compressed: true,
|
|
206
217
|
};
|
|
207
218
|
const job = {
|
|
208
219
|
id: 'job-123',
|
|
@@ -254,7 +265,7 @@ describe('JobProcessor', () => {
|
|
|
254
265
|
describe('process bez commandLogger', () => {
|
|
255
266
|
it('powinno działać gdy commandLogger nie jest dostępny', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
256
267
|
// Given
|
|
257
|
-
const jobProcessorWithoutLogger = new job_processor_1.default(mockCommandHandlers, mockRedisConnection, mockLogger, mockJobOptionsBuilder);
|
|
268
|
+
const jobProcessorWithoutLogger = new job_processor_1.default(mockCommandHandlers, mockRedisConnection, mockLogger, mockJobOptionsBuilder, mockCompressionService);
|
|
258
269
|
const command = new TestCommand('test data');
|
|
259
270
|
const commandName = 'TestCommand';
|
|
260
271
|
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":";;;;;;;;;;;;;;AAEA,oEAA2C;AAC3C,yDAAiC;
|
|
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,5 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Moduł RPC (Request-Response Pattern)
|
|
3
3
|
* Eksportuje RpcCoordinator do zarządzania wywołaniami RPC
|
|
4
|
+
* Eksportuje PayloadCompressionService do kompresji payloadów
|
|
4
5
|
*/
|
|
5
6
|
export { default as RpcCoordinator } from './rpc-coordinator';
|
|
7
|
+
export { default as PayloadCompressionService } from './payload-compression.service';
|
|
8
|
+
export type { CompressionResult } from './payload-compression.service';
|
|
@@ -3,11 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.RpcCoordinator = void 0;
|
|
6
|
+
exports.PayloadCompressionService = exports.RpcCoordinator = void 0;
|
|
7
7
|
/**
|
|
8
8
|
* Moduł RPC (Request-Response Pattern)
|
|
9
9
|
* Eksportuje RpcCoordinator do zarządzania wywołaniami RPC
|
|
10
|
+
* Eksportuje PayloadCompressionService do kompresji payloadów
|
|
10
11
|
*/
|
|
11
12
|
var rpc_coordinator_1 = require("./rpc-coordinator");
|
|
12
13
|
Object.defineProperty(exports, "RpcCoordinator", { enumerable: true, get: function () { return __importDefault(rpc_coordinator_1).default; } });
|
|
14
|
+
var payload_compression_service_1 = require("./payload-compression.service");
|
|
15
|
+
Object.defineProperty(exports, "PayloadCompressionService", { enumerable: true, get: function () { return __importDefault(payload_compression_service_1).default; } });
|
|
13
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/command-bus/rpc/index.ts"],"names":[],"mappings":";;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/command-bus/rpc/index.ts"],"names":[],"mappings":";;;;;;AAAA;;;;GAIG;AACH,qDAA8D;AAArD,kIAAA,OAAO,OAAkB;AAClC,6EAAqF;AAA5E,yJAAA,OAAO,OAA6B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ILogger } from '../../shared/types';
|
|
2
|
+
/**
|
|
3
|
+
* Wynik kompresji payloadu
|
|
4
|
+
*/
|
|
5
|
+
export interface CompressionResult {
|
|
6
|
+
data: string;
|
|
7
|
+
compressed: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Serwis kompresji payloadów RPC
|
|
11
|
+
* Automatycznie kompresuje payloady większe niż threshold za pomocą gzip (async)
|
|
12
|
+
* Używa async gzip aby nie blokować event loop Node.js
|
|
13
|
+
*/
|
|
14
|
+
export default class PayloadCompressionService {
|
|
15
|
+
private readonly threshold;
|
|
16
|
+
private readonly logger;
|
|
17
|
+
constructor(threshold: number, logger: ILogger);
|
|
18
|
+
/**
|
|
19
|
+
* Kompresuje payload jeśli przekracza threshold (async - nie blokuje event loop)
|
|
20
|
+
* @param payload - Dane do kompresji
|
|
21
|
+
* @returns Promise z obiektem zawierającym data (JSON lub base64 gzip) i flagą compressed
|
|
22
|
+
*/
|
|
23
|
+
compress(payload: unknown): Promise<CompressionResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Dekompresuje payload na podstawie flagi compressed (async - nie blokuje event loop)
|
|
26
|
+
* @param data - Dane do dekompresji (JSON string lub base64 gzip)
|
|
27
|
+
* @param compressed - Czy dane są skompresowane
|
|
28
|
+
* @returns Promise ze zdeserializowanym obiektem
|
|
29
|
+
* @throws Error jeśli dekompresja lub parsowanie się nie powiedzie
|
|
30
|
+
*/
|
|
31
|
+
decompress(data: string, compressed: boolean): Promise<unknown>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
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 zlib_1 = require("zlib");
|
|
13
|
+
const util_1 = require("util");
|
|
14
|
+
/**
|
|
15
|
+
* Async wersje funkcji zlib (nie blokują event loop)
|
|
16
|
+
*/
|
|
17
|
+
const gzipAsync = (0, util_1.promisify)(zlib_1.gzip);
|
|
18
|
+
const gunzipAsync = (0, util_1.promisify)(zlib_1.gunzip);
|
|
19
|
+
/**
|
|
20
|
+
* Serwis kompresji payloadów RPC
|
|
21
|
+
* Automatycznie kompresuje payloady większe niż threshold za pomocą gzip (async)
|
|
22
|
+
* Używa async gzip aby nie blokować event loop Node.js
|
|
23
|
+
*/
|
|
24
|
+
class PayloadCompressionService {
|
|
25
|
+
constructor(threshold, logger) {
|
|
26
|
+
this.threshold = threshold;
|
|
27
|
+
this.logger = logger;
|
|
28
|
+
this.logger.debug('PayloadCompressionService utworzony', {
|
|
29
|
+
threshold: `${threshold} bytes`,
|
|
30
|
+
timestamp: new Date().toISOString(),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Kompresuje payload jeśli przekracza threshold (async - nie blokuje event loop)
|
|
35
|
+
* @param payload - Dane do kompresji
|
|
36
|
+
* @returns Promise z obiektem zawierającym data (JSON lub base64 gzip) i flagą compressed
|
|
37
|
+
*/
|
|
38
|
+
compress(payload) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
// Serializuj do JSON
|
|
41
|
+
const json = JSON.stringify(payload);
|
|
42
|
+
const originalSize = Buffer.byteLength(json, 'utf8');
|
|
43
|
+
// Sprawdź czy przekracza threshold
|
|
44
|
+
if (originalSize <= this.threshold) {
|
|
45
|
+
this.logger.debug('Payload NIE skompresowany (poniżej threshold)', {
|
|
46
|
+
originalSize,
|
|
47
|
+
threshold: this.threshold,
|
|
48
|
+
timestamp: new Date().toISOString(),
|
|
49
|
+
});
|
|
50
|
+
return {
|
|
51
|
+
data: json,
|
|
52
|
+
compressed: false,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Kompresuj gzip (async - nie blokuje event loop)
|
|
56
|
+
const compressed = yield gzipAsync(Buffer.from(json, 'utf8'));
|
|
57
|
+
const compressedBase64 = compressed.toString('base64');
|
|
58
|
+
const compressedSize = Buffer.byteLength(compressedBase64, 'utf8');
|
|
59
|
+
const compressionRatio = Math.round(((originalSize - compressedSize) / originalSize) * 100);
|
|
60
|
+
this.logger.debug('Payload skompresowany gzip', {
|
|
61
|
+
originalSize,
|
|
62
|
+
compressedSize,
|
|
63
|
+
compressionRatio: `${compressionRatio}%`,
|
|
64
|
+
timestamp: new Date().toISOString(),
|
|
65
|
+
});
|
|
66
|
+
return {
|
|
67
|
+
data: compressedBase64,
|
|
68
|
+
compressed: true,
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Dekompresuje payload na podstawie flagi compressed (async - nie blokuje event loop)
|
|
74
|
+
* @param data - Dane do dekompresji (JSON string lub base64 gzip)
|
|
75
|
+
* @param compressed - Czy dane są skompresowane
|
|
76
|
+
* @returns Promise ze zdeserializowanym obiektem
|
|
77
|
+
* @throws Error jeśli dekompresja lub parsowanie się nie powiedzie
|
|
78
|
+
*/
|
|
79
|
+
decompress(data, compressed) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
if (!compressed) {
|
|
82
|
+
// Proste parsowanie JSON
|
|
83
|
+
return JSON.parse(data);
|
|
84
|
+
}
|
|
85
|
+
// Dekompresja gzip (async - nie blokuje event loop)
|
|
86
|
+
try {
|
|
87
|
+
const compressedBuffer = Buffer.from(data, 'base64');
|
|
88
|
+
const decompressed = yield gunzipAsync(compressedBuffer);
|
|
89
|
+
const json = decompressed.toString('utf8');
|
|
90
|
+
this.logger.debug('Payload zdekompresowany', {
|
|
91
|
+
compressedSize: data.length,
|
|
92
|
+
decompressedSize: json.length,
|
|
93
|
+
timestamp: new Date().toISOString(),
|
|
94
|
+
});
|
|
95
|
+
return JSON.parse(json);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
this.logger.error('Błąd dekompresji payloadu', {
|
|
99
|
+
error: error instanceof Error ? error.message : String(error),
|
|
100
|
+
dataLength: data.length,
|
|
101
|
+
timestamp: new Date().toISOString(),
|
|
102
|
+
});
|
|
103
|
+
throw new Error('Failed to decompress payload');
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.default = PayloadCompressionService;
|
|
109
|
+
//# sourceMappingURL=payload-compression.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-compression.service.js","sourceRoot":"","sources":["../../../src/command-bus/rpc/payload-compression.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|