pp-command-bus 1.5.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +400 -1219
- package/dist/command-bus/command-bus.spec.js +138 -359
- package/dist/command-bus/command-bus.spec.js.map +1 -1
- package/dist/command-bus/command.d.ts +3 -4
- package/dist/command-bus/command.js +3 -32
- package/dist/command-bus/command.js.map +1 -1
- package/dist/command-bus/config/command-bus-config.d.ts +75 -21
- package/dist/command-bus/config/command-bus-config.js +99 -58
- package/dist/command-bus/config/command-bus-config.js.map +1 -1
- package/dist/command-bus/config/command-bus-config.spec.js +174 -100
- package/dist/command-bus/config/command-bus-config.spec.js.map +1 -1
- package/dist/command-bus/index.d.ts +39 -52
- package/dist/command-bus/index.js +133 -126
- package/dist/command-bus/index.js.map +1 -1
- package/dist/command-bus/logging/command-logger.d.ts +2 -0
- package/dist/command-bus/logging/command-logger.js +7 -0
- package/dist/command-bus/logging/command-logger.js.map +1 -1
- package/dist/command-bus/logging/command-logger.spec.js +36 -0
- package/dist/command-bus/logging/command-logger.spec.js.map +1 -1
- package/dist/command-bus/serialization/index.d.ts +6 -0
- package/dist/command-bus/serialization/index.js +9 -0
- package/dist/command-bus/serialization/index.js.map +1 -0
- package/dist/command-bus/serialization/msgpack-serializer.d.ts +26 -0
- package/dist/command-bus/serialization/msgpack-serializer.js +70 -0
- package/dist/command-bus/serialization/msgpack-serializer.js.map +1 -0
- package/dist/command-bus/serialization/msgpack-serializer.spec.js +223 -0
- package/dist/command-bus/serialization/msgpack-serializer.spec.js.map +1 -0
- package/dist/command-bus/serialization/serializer.interface.d.ts +21 -0
- package/dist/command-bus/serialization/serializer.interface.js +3 -0
- package/dist/command-bus/serialization/serializer.interface.js.map +1 -0
- package/dist/command-bus/transport/consumer-loop.d.ts +45 -0
- package/dist/command-bus/transport/consumer-loop.js +90 -0
- package/dist/command-bus/transport/consumer-loop.js.map +1 -0
- package/dist/command-bus/transport/consumer-loop.spec.js +216 -0
- package/dist/command-bus/transport/consumer-loop.spec.js.map +1 -0
- package/dist/command-bus/transport/index.d.ts +21 -0
- package/dist/command-bus/transport/index.js +23 -0
- package/dist/command-bus/transport/index.js.map +1 -0
- package/dist/command-bus/transport/message-processor.d.ts +59 -0
- package/dist/command-bus/transport/message-processor.js +111 -0
- package/dist/command-bus/transport/message-processor.js.map +1 -0
- package/dist/command-bus/transport/message-processor.spec.js +185 -0
- package/dist/command-bus/transport/message-processor.spec.js.map +1 -0
- package/dist/command-bus/transport/pending-recovery.d.ts +54 -0
- package/dist/command-bus/transport/pending-recovery.js +139 -0
- package/dist/command-bus/transport/pending-recovery.js.map +1 -0
- package/dist/command-bus/transport/pending-recovery.spec.js +176 -0
- package/dist/command-bus/transport/pending-recovery.spec.js.map +1 -0
- package/dist/command-bus/transport/redis-codec.d.ts +24 -0
- package/dist/command-bus/transport/redis-codec.js +33 -0
- package/dist/command-bus/transport/redis-codec.js.map +1 -0
- package/dist/command-bus/transport/redis-codec.spec.js +53 -0
- package/dist/command-bus/transport/redis-codec.spec.js.map +1 -0
- package/dist/command-bus/transport/redis-streams-transport.d.ts +91 -0
- package/dist/command-bus/transport/redis-streams-transport.js +134 -0
- package/dist/command-bus/transport/redis-streams-transport.js.map +1 -0
- package/dist/command-bus/transport/redis-streams-transport.spec.js +420 -0
- package/dist/command-bus/transport/redis-streams-transport.spec.js.map +1 -0
- package/dist/command-bus/transport/rpc-handler.d.ts +39 -0
- package/dist/command-bus/transport/rpc-handler.js +87 -0
- package/dist/command-bus/transport/rpc-handler.js.map +1 -0
- package/dist/command-bus/transport/rpc-handler.spec.js +157 -0
- package/dist/command-bus/transport/rpc-handler.spec.js.map +1 -0
- package/dist/command-bus/transport/stream-consumer.d.ts +89 -0
- package/dist/command-bus/transport/stream-consumer.js +181 -0
- package/dist/command-bus/transport/stream-consumer.js.map +1 -0
- package/dist/command-bus/transport/stream-consumer.spec.js +284 -0
- package/dist/command-bus/transport/stream-consumer.spec.js.map +1 -0
- package/dist/command-bus/transport/stream-producer.d.ts +23 -0
- package/dist/command-bus/transport/stream-producer.js +70 -0
- package/dist/command-bus/transport/stream-producer.js.map +1 -0
- package/dist/command-bus/transport/stream-producer.spec.js +125 -0
- package/dist/command-bus/transport/stream-producer.spec.js.map +1 -0
- package/dist/command-bus/transport/transport.interface.d.ts +87 -0
- package/dist/command-bus/transport/transport.interface.js +3 -0
- package/dist/command-bus/transport/transport.interface.js.map +1 -0
- package/dist/command-bus/types/index.d.ts +0 -84
- package/dist/examples/rpc.demo.js +1 -1
- package/dist/examples/rpc.demo.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/pp-command-bus-2.0.0.tgz +0 -0
- package/dist/shared/redis/connection-pool.d.ts +54 -0
- package/dist/shared/redis/connection-pool.js +117 -0
- package/dist/shared/redis/connection-pool.js.map +1 -0
- package/dist/shared/redis/connection-pool.spec.js +114 -0
- package/dist/shared/redis/connection-pool.spec.js.map +1 -0
- package/dist/shared/redis/index.d.ts +5 -3
- package/dist/shared/redis/index.js +6 -4
- package/dist/shared/redis/index.js.map +1 -1
- package/dist/shared/redis/rpc-connection-pool.d.ts +61 -0
- package/dist/shared/redis/rpc-connection-pool.js +154 -0
- package/dist/shared/redis/rpc-connection-pool.js.map +1 -0
- package/dist/shared/redis/rpc-connection-pool.spec.d.ts +1 -0
- package/dist/shared/redis/rpc-connection-pool.spec.js +173 -0
- package/dist/shared/redis/rpc-connection-pool.spec.js.map +1 -0
- package/dist/shared/types.d.ts +0 -4
- package/dist/shared/utils/error-utils.d.ts +8 -0
- package/dist/shared/utils/error-utils.js +14 -0
- package/dist/shared/utils/error-utils.js.map +1 -0
- package/package.json +12 -12
- package/dist/command-bus/config/auto-config-optimizer.d.ts +0 -35
- package/dist/command-bus/config/auto-config-optimizer.js +0 -52
- package/dist/command-bus/config/auto-config-optimizer.js.map +0 -1
- package/dist/command-bus/config/auto-config-optimizer.spec.js +0 -42
- package/dist/command-bus/config/auto-config-optimizer.spec.js.map +0 -1
- package/dist/command-bus/job/index.d.ts +0 -6
- package/dist/command-bus/job/index.js +0 -15
- package/dist/command-bus/job/index.js.map +0 -1
- package/dist/command-bus/job/job-options-builder.d.ts +0 -21
- package/dist/command-bus/job/job-options-builder.js +0 -58
- package/dist/command-bus/job/job-options-builder.js.map +0 -1
- package/dist/command-bus/job/job-options-builder.spec.js +0 -156
- package/dist/command-bus/job/job-options-builder.spec.js.map +0 -1
- package/dist/command-bus/job/job-processor.d.ts +0 -39
- package/dist/command-bus/job/job-processor.js +0 -203
- package/dist/command-bus/job/job-processor.js.map +0 -1
- package/dist/command-bus/job/job-processor.spec.js +0 -436
- package/dist/command-bus/job/job-processor.spec.js.map +0 -1
- package/dist/command-bus/queue/index.d.ts +0 -5
- package/dist/command-bus/queue/index.js +0 -13
- package/dist/command-bus/queue/index.js.map +0 -1
- package/dist/command-bus/queue/queue-manager.d.ts +0 -56
- package/dist/command-bus/queue/queue-manager.js +0 -163
- package/dist/command-bus/queue/queue-manager.js.map +0 -1
- package/dist/command-bus/queue/queue-manager.spec.js +0 -371
- package/dist/command-bus/queue/queue-manager.spec.js.map +0 -1
- package/dist/command-bus/rpc/index.d.ts +0 -11
- package/dist/command-bus/rpc/index.js +0 -19
- package/dist/command-bus/rpc/index.js.map +0 -1
- package/dist/command-bus/rpc/payload-compression.service.d.ts +0 -50
- package/dist/command-bus/rpc/payload-compression.service.js +0 -215
- package/dist/command-bus/rpc/payload-compression.service.js.map +0 -1
- package/dist/command-bus/rpc/payload-compression.service.spec.js +0 -376
- package/dist/command-bus/rpc/payload-compression.service.spec.js.map +0 -1
- package/dist/command-bus/rpc/rpc-coordinator.d.ts +0 -96
- package/dist/command-bus/rpc/rpc-coordinator.js +0 -500
- package/dist/command-bus/rpc/rpc-coordinator.js.map +0 -1
- package/dist/command-bus/rpc/rpc-coordinator.spec.js +0 -621
- package/dist/command-bus/rpc/rpc-coordinator.spec.js.map +0 -1
- package/dist/command-bus/rpc/rpc-job-cancellation.service.d.ts +0 -82
- package/dist/command-bus/rpc/rpc-job-cancellation.service.js +0 -180
- package/dist/command-bus/rpc/rpc-job-cancellation.service.js.map +0 -1
- package/dist/command-bus/rpc/rpc-job-cancellation.service.spec.js +0 -286
- package/dist/command-bus/rpc/rpc-job-cancellation.service.spec.js.map +0 -1
- package/dist/command-bus/worker/index.d.ts +0 -10
- package/dist/command-bus/worker/index.js +0 -19
- package/dist/command-bus/worker/index.js.map +0 -1
- package/dist/command-bus/worker/worker-benchmark.d.ts +0 -71
- package/dist/command-bus/worker/worker-benchmark.js +0 -202
- package/dist/command-bus/worker/worker-benchmark.js.map +0 -1
- package/dist/command-bus/worker/worker-benchmark.spec.js +0 -310
- package/dist/command-bus/worker/worker-benchmark.spec.js.map +0 -1
- package/dist/command-bus/worker/worker-metrics-collector.d.ts +0 -98
- package/dist/command-bus/worker/worker-metrics-collector.js +0 -242
- package/dist/command-bus/worker/worker-metrics-collector.js.map +0 -1
- package/dist/command-bus/worker/worker-orchestrator.d.ts +0 -70
- package/dist/command-bus/worker/worker-orchestrator.js +0 -339
- package/dist/command-bus/worker/worker-orchestrator.js.map +0 -1
- package/dist/command-bus/worker/worker-orchestrator.spec.js +0 -712
- package/dist/command-bus/worker/worker-orchestrator.spec.js.map +0 -1
- package/dist/examples/auto-config.demo.d.ts +0 -9
- package/dist/examples/auto-config.demo.js +0 -106
- package/dist/examples/auto-config.demo.js.map +0 -1
- package/dist/examples/rpc-compression.demo.d.ts +0 -5
- package/dist/examples/rpc-compression.demo.js +0 -358
- package/dist/examples/rpc-compression.demo.js.map +0 -1
- package/dist/examples/rpc-resilience.demo.d.ts +0 -15
- package/dist/examples/rpc-resilience.demo.js +0 -233
- package/dist/examples/rpc-resilience.demo.js.map +0 -1
- package/dist/pp-command-bus-1.5.0.tgz +0 -0
- package/dist/shared/config/base-config.d.ts +0 -54
- package/dist/shared/config/base-config.js +0 -114
- package/dist/shared/config/base-config.js.map +0 -1
- package/dist/shared/config/base-config.spec.js +0 -204
- package/dist/shared/config/base-config.spec.js.map +0 -1
- package/dist/shared/config/index.d.ts +0 -1
- package/dist/shared/config/index.js +0 -9
- package/dist/shared/config/index.js.map +0 -1
- package/dist/shared/redis/redis-connection-factory.d.ts +0 -66
- package/dist/shared/redis/redis-connection-factory.js +0 -113
- package/dist/shared/redis/redis-connection-factory.js.map +0 -1
- /package/dist/command-bus/{config/auto-config-optimizer.spec.d.ts → serialization/msgpack-serializer.spec.d.ts} +0 -0
- /package/dist/command-bus/{job/job-options-builder.spec.d.ts → transport/consumer-loop.spec.d.ts} +0 -0
- /package/dist/command-bus/{job/job-processor.spec.d.ts → transport/message-processor.spec.d.ts} +0 -0
- /package/dist/command-bus/{queue/queue-manager.spec.d.ts → transport/pending-recovery.spec.d.ts} +0 -0
- /package/dist/command-bus/{rpc/payload-compression.service.spec.d.ts → transport/redis-codec.spec.d.ts} +0 -0
- /package/dist/command-bus/{rpc/rpc-coordinator.spec.d.ts → transport/redis-streams-transport.spec.d.ts} +0 -0
- /package/dist/command-bus/{rpc/rpc-job-cancellation.service.spec.d.ts → transport/rpc-handler.spec.d.ts} +0 -0
- /package/dist/command-bus/{worker/worker-benchmark.spec.d.ts → transport/stream-consumer.spec.d.ts} +0 -0
- /package/dist/command-bus/{worker/worker-orchestrator.spec.d.ts → transport/stream-producer.spec.d.ts} +0 -0
- /package/dist/shared/{config/base-config.spec.d.ts → redis/connection-pool.spec.d.ts} +0 -0
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
import type { Job } from 'bullmq';
|
|
2
1
|
import type { TCallableAsync } from '../../shared/types';
|
|
3
2
|
import type Command from '../command';
|
|
4
|
-
/**
|
|
5
|
-
* Metadane kompresji dla Command
|
|
6
|
-
* Przechowuje informację czy dane są skompresowane i skompresowane dane
|
|
7
|
-
*/
|
|
8
|
-
export interface CompressionMetadata {
|
|
9
|
-
__compressed?: boolean;
|
|
10
|
-
__compressedData?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Command z metadanymi kompresji
|
|
14
|
-
* Umożliwia transparentną kompresję/dekompresję Command obiektów
|
|
15
|
-
*
|
|
16
|
-
* @template T - Typ payloadu komendy
|
|
17
|
-
*/
|
|
18
|
-
export type CompressibleCommand<T = unknown> = Command<T> & CompressionMetadata;
|
|
19
3
|
/**
|
|
20
4
|
* Ekstrakcja typu payloadu z Command
|
|
21
5
|
* Umożliwia wyciągnięcie typu T z Command<T>
|
|
@@ -27,75 +11,7 @@ export type CompressibleCommand<T = unknown> = Command<T> & CompressionMetadata;
|
|
|
27
11
|
* ```
|
|
28
12
|
*/
|
|
29
13
|
export type CommandPayload<C extends Command<unknown>> = C extends Command<infer P> ? P : never;
|
|
30
|
-
/**
|
|
31
|
-
* Metadane dla wywołania RPC
|
|
32
|
-
* Odpowiedzi są wysyłane przez Redis Pub/Sub zamiast kolejek BullMQ
|
|
33
|
-
*/
|
|
34
|
-
export interface RpcMetadata {
|
|
35
|
-
correlationId: string;
|
|
36
|
-
responseChannel: string;
|
|
37
|
-
timestamp: number;
|
|
38
|
-
compressed: boolean;
|
|
39
|
-
}
|
|
40
14
|
/**
|
|
41
15
|
* Handler dla komendy
|
|
42
16
|
*/
|
|
43
17
|
export type CommandHandler = TCallableAsync;
|
|
44
|
-
/**
|
|
45
|
-
* Opcje dla jobów BullMQ
|
|
46
|
-
*/
|
|
47
|
-
export interface JobOptions {
|
|
48
|
-
removeOnComplete: boolean | {
|
|
49
|
-
age?: number;
|
|
50
|
-
count?: number;
|
|
51
|
-
};
|
|
52
|
-
removeOnFail: {
|
|
53
|
-
count: number;
|
|
54
|
-
age: number;
|
|
55
|
-
};
|
|
56
|
-
attempts: number;
|
|
57
|
-
backoff: {
|
|
58
|
-
type: 'exponential';
|
|
59
|
-
delay: number;
|
|
60
|
-
};
|
|
61
|
-
lifo: boolean;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Worker processor function
|
|
65
|
-
*/
|
|
66
|
-
export type WorkerProcessor = (job: Job) => Promise<unknown>;
|
|
67
|
-
/**
|
|
68
|
-
* Pending RPC call w shared subscriber
|
|
69
|
-
* Przechowuje promise handlers i metadane dla routingu odpowiedzi
|
|
70
|
-
*/
|
|
71
|
-
export interface PendingRpcCall {
|
|
72
|
-
resolve: (value: unknown) => void;
|
|
73
|
-
reject: (error: Error) => void;
|
|
74
|
-
timeoutId: NodeJS.Timeout;
|
|
75
|
-
commandName: string;
|
|
76
|
-
startTime: number;
|
|
77
|
-
/** ID joba w BullMQ - ustawiane po dodaniu do kolejki */
|
|
78
|
-
jobId?: string;
|
|
79
|
-
/** Nazwa kolejki - używana przy próbie usunięcia joba po timeout */
|
|
80
|
-
queueName?: string;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Statystyki pamięci dla CommandBus
|
|
84
|
-
*
|
|
85
|
-
* Uwaga: RPC używa Redis Pub/Sub zamiast kolejek BullMQ.
|
|
86
|
-
* Shared subscriber z pattern matching `rpc:response:{processId}:*`
|
|
87
|
-
* routuje odpowiedzi do odpowiednich pending calls przez Map.
|
|
88
|
-
*/
|
|
89
|
-
export interface MemoryStats {
|
|
90
|
-
queues: {
|
|
91
|
-
commandQueuesCount: number;
|
|
92
|
-
};
|
|
93
|
-
workers: {
|
|
94
|
-
activeWorkersCount: number;
|
|
95
|
-
workerNames: string[];
|
|
96
|
-
};
|
|
97
|
-
handlers: {
|
|
98
|
-
registeredHandlersCount: number;
|
|
99
|
-
handlerNames: string[];
|
|
100
|
-
};
|
|
101
|
-
}
|
|
@@ -213,7 +213,7 @@ function runRpcDemo() {
|
|
|
213
213
|
console.log('\n=== Demo zakończone ===');
|
|
214
214
|
console.log('RPC pozwala na synchroniczne wywołanie komend z otrzymaniem wyniku');
|
|
215
215
|
console.log('Obsługa błędów, timeoutów i równoległych wywołań');
|
|
216
|
-
console.log('
|
|
216
|
+
console.log('dispatch() działa asynchronicznie (fire-and-forget)\n');
|
|
217
217
|
// Zamknij połączenia
|
|
218
218
|
yield commandBus.close();
|
|
219
219
|
process.exit(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.demo.js","sourceRoot":"","sources":["../../src/examples/rpc.demo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rpc.demo.js","sourceRoot":"","sources":["../../src/examples/rpc.demo.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PP Command Bus
|
|
2
|
+
* PP Command Bus — Distributed Command Bus library
|
|
3
3
|
*
|
|
4
|
-
* Biblioteka do obsługi rozproszonych komend z wykorzystaniem
|
|
5
|
-
* Wspiera wzorzec CQRS, RPC calls i
|
|
4
|
+
* Biblioteka do obsługi rozproszonych komend z wykorzystaniem Redis Streams i DragonflyDB.
|
|
5
|
+
* Wspiera wzorzec CQRS, RPC calls z LPUSH/BRPOP i MessagePack serializację.
|
|
6
6
|
*/
|
|
7
7
|
export { default as CommandBus } from './command-bus';
|
|
8
8
|
export { default as Command } from './command-bus/command';
|
|
9
9
|
export { default as CommandBusConfig } from './command-bus/config/command-bus-config';
|
|
10
|
-
export type { ILogger, TDict,
|
|
11
|
-
export type {
|
|
10
|
+
export type { ILogger, TDict, TCallableAsync } from './shared/types';
|
|
11
|
+
export type { CommandPayload, CommandHandler } from './command-bus/types';
|
|
12
|
+
export type { ITransport, IStreamProducer, IStreamConsumer, IRpcTransport, IClosable, ConsumerHandler, RpcMessageMetadata, } from './command-bus/transport';
|
|
13
|
+
export type { ISerializer } from './command-bus/serialization';
|
|
14
|
+
export { MsgpackSerializer } from './command-bus/serialization';
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* PP Command Bus
|
|
3
|
+
* PP Command Bus — Distributed Command Bus library
|
|
4
4
|
*
|
|
5
|
-
* Biblioteka do obsługi rozproszonych komend z wykorzystaniem
|
|
6
|
-
* Wspiera wzorzec CQRS, RPC calls i
|
|
5
|
+
* Biblioteka do obsługi rozproszonych komend z wykorzystaniem Redis Streams i DragonflyDB.
|
|
6
|
+
* Wspiera wzorzec CQRS, RPC calls z LPUSH/BRPOP i MessagePack serializację.
|
|
7
7
|
*/
|
|
8
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.CommandBusConfig = exports.Command = exports.CommandBus = void 0;
|
|
12
|
+
exports.MsgpackSerializer = exports.CommandBusConfig = exports.Command = exports.CommandBus = void 0;
|
|
13
13
|
// Główne eksporty
|
|
14
14
|
var command_bus_1 = require("./command-bus");
|
|
15
15
|
Object.defineProperty(exports, "CommandBus", { enumerable: true, get: function () { return __importDefault(command_bus_1).default; } });
|
|
@@ -17,4 +17,6 @@ var command_1 = require("./command-bus/command");
|
|
|
17
17
|
Object.defineProperty(exports, "Command", { enumerable: true, get: function () { return __importDefault(command_1).default; } });
|
|
18
18
|
var command_bus_config_1 = require("./command-bus/config/command-bus-config");
|
|
19
19
|
Object.defineProperty(exports, "CommandBusConfig", { enumerable: true, get: function () { return __importDefault(command_bus_config_1).default; } });
|
|
20
|
+
var serialization_1 = require("./command-bus/serialization");
|
|
21
|
+
Object.defineProperty(exports, "MsgpackSerializer", { enumerable: true, get: function () { return serialization_1.MsgpackSerializer; } });
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,kBAAkB;AAClB,6CAAsD;AAA7C,0HAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,mHAAA,OAAO,OAAW;AAC3B,8EAAsF;AAA7E,uIAAA,OAAO,OAAoB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,kBAAkB;AAClB,6CAAsD;AAA7C,0HAAA,OAAO,OAAc;AAC9B,iDAA2D;AAAlD,mHAAA,OAAO,OAAW;AAC3B,8EAAsF;AAA7E,uIAAA,OAAO,OAAoB;AAmBpC,6DAAgE;AAAvD,kHAAA,iBAAiB,OAAA"}
|
|
Binary file
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Redis, type RedisOptions } from 'ioredis';
|
|
2
|
+
import type { ILogger } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Opcje konfiguracji puli połączeń Redis
|
|
5
|
+
*/
|
|
6
|
+
export interface ConnectionPoolOptions {
|
|
7
|
+
/** Opcje połączenia ioredis */
|
|
8
|
+
redisOptions: RedisOptions;
|
|
9
|
+
/** Rozmiar puli (domyślnie 2 * CPU count) */
|
|
10
|
+
size: number;
|
|
11
|
+
/** Logger */
|
|
12
|
+
logger: ILogger;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Pula połączeń Redis z round-robin dla operacji nieblokujących
|
|
16
|
+
*
|
|
17
|
+
* Przeznaczona dla komend takich jak XADD, XACK, DEL, pipeline
|
|
18
|
+
* które nie blokują połączenia. Połączenia tworzone eagerly przy starcie.
|
|
19
|
+
*
|
|
20
|
+
* DragonflyDB przetwarza komendy z wielu połączeń równolegle
|
|
21
|
+
* na różnych wątkach, więc więcej połączeń = lepszy throughput.
|
|
22
|
+
*/
|
|
23
|
+
export default class RedisConnectionPool {
|
|
24
|
+
private readonly options;
|
|
25
|
+
private readonly connections;
|
|
26
|
+
private index;
|
|
27
|
+
private closed;
|
|
28
|
+
constructor(options: ConnectionPoolOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Zwraca następne połączenie z puli (round-robin)
|
|
31
|
+
* Używaj wyłącznie do operacji nieblokujących (XADD, XACK, DEL, pipeline)
|
|
32
|
+
*/
|
|
33
|
+
next(): Redis;
|
|
34
|
+
/**
|
|
35
|
+
* Tworzy nowe dedykowane połączenie (np. dla XREADGROUP BLOCK)
|
|
36
|
+
* Połączenie NIE jest częścią puli — caller odpowiada za zamknięcie
|
|
37
|
+
*
|
|
38
|
+
* @param name - Nazwa połączenia (do logów)
|
|
39
|
+
* @param overrideOptions - Opcje nadpisujące bazowe (np. maxRetriesPerRequest: null)
|
|
40
|
+
*/
|
|
41
|
+
createDedicated(name: string, overrideOptions?: Partial<RedisOptions>): Redis;
|
|
42
|
+
/**
|
|
43
|
+
* Zwraca rozmiar puli
|
|
44
|
+
*/
|
|
45
|
+
get size(): number;
|
|
46
|
+
/**
|
|
47
|
+
* Zamyka wszystkie połączenia w puli
|
|
48
|
+
*/
|
|
49
|
+
close(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Konfiguruje handlery eventów dla połączenia
|
|
52
|
+
*/
|
|
53
|
+
private setupEventHandlers;
|
|
54
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
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 ioredis_1 = require("ioredis");
|
|
13
|
+
const redis_error_formatter_1 = require("./redis-error-formatter");
|
|
14
|
+
/**
|
|
15
|
+
* Pula połączeń Redis z round-robin dla operacji nieblokujących
|
|
16
|
+
*
|
|
17
|
+
* Przeznaczona dla komend takich jak XADD, XACK, DEL, pipeline
|
|
18
|
+
* które nie blokują połączenia. Połączenia tworzone eagerly przy starcie.
|
|
19
|
+
*
|
|
20
|
+
* DragonflyDB przetwarza komendy z wielu połączeń równolegle
|
|
21
|
+
* na różnych wątkach, więc więcej połączeń = lepszy throughput.
|
|
22
|
+
*/
|
|
23
|
+
class RedisConnectionPool {
|
|
24
|
+
constructor(options) {
|
|
25
|
+
this.options = options;
|
|
26
|
+
this.index = 0;
|
|
27
|
+
this.closed = false;
|
|
28
|
+
const { size, redisOptions, logger } = options;
|
|
29
|
+
if (size < 1) {
|
|
30
|
+
throw new Error('Rozmiar puli połączeń musi wynosić co najmniej 1');
|
|
31
|
+
}
|
|
32
|
+
this.connections = Array.from({ length: size }, (_, i) => {
|
|
33
|
+
const conn = new ioredis_1.Redis(redisOptions);
|
|
34
|
+
this.setupEventHandlers(conn, `Pool[${i}]`, logger);
|
|
35
|
+
return conn;
|
|
36
|
+
});
|
|
37
|
+
logger.debug('Pula połączeń Redis utworzona', {
|
|
38
|
+
size,
|
|
39
|
+
timestamp: new Date().toISOString(),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Zwraca następne połączenie z puli (round-robin)
|
|
44
|
+
* Używaj wyłącznie do operacji nieblokujących (XADD, XACK, DEL, pipeline)
|
|
45
|
+
*/
|
|
46
|
+
next() {
|
|
47
|
+
if (this.closed) {
|
|
48
|
+
throw new Error('Pula połączeń jest zamknięta');
|
|
49
|
+
}
|
|
50
|
+
const conn = this.connections[this.index];
|
|
51
|
+
this.index = (this.index + 1) % this.connections.length;
|
|
52
|
+
return conn;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Tworzy nowe dedykowane połączenie (np. dla XREADGROUP BLOCK)
|
|
56
|
+
* Połączenie NIE jest częścią puli — caller odpowiada za zamknięcie
|
|
57
|
+
*
|
|
58
|
+
* @param name - Nazwa połączenia (do logów)
|
|
59
|
+
* @param overrideOptions - Opcje nadpisujące bazowe (np. maxRetriesPerRequest: null)
|
|
60
|
+
*/
|
|
61
|
+
createDedicated(name, overrideOptions) {
|
|
62
|
+
if (this.closed) {
|
|
63
|
+
throw new Error('Pula połączeń jest zamknięta');
|
|
64
|
+
}
|
|
65
|
+
const conn = new ioredis_1.Redis(Object.assign(Object.assign({}, this.options.redisOptions), overrideOptions));
|
|
66
|
+
this.setupEventHandlers(conn, `Dedicated[${name}]`, this.options.logger);
|
|
67
|
+
return conn;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Zwraca rozmiar puli
|
|
71
|
+
*/
|
|
72
|
+
get size() {
|
|
73
|
+
return this.connections.length;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Zamyka wszystkie połączenia w puli
|
|
77
|
+
*/
|
|
78
|
+
close() {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
if (this.closed)
|
|
81
|
+
return;
|
|
82
|
+
this.closed = true;
|
|
83
|
+
this.options.logger.debug('Zamykanie puli połączeń Redis', {
|
|
84
|
+
size: this.connections.length,
|
|
85
|
+
timestamp: new Date().toISOString(),
|
|
86
|
+
});
|
|
87
|
+
yield Promise.all(this.connections.map((c) => c.quit()));
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Konfiguruje handlery eventów dla połączenia
|
|
92
|
+
*/
|
|
93
|
+
setupEventHandlers(connection, name, logger) {
|
|
94
|
+
connection.on('error', (error) => {
|
|
95
|
+
logger.error(`Błąd połączenia Redis (${name})`, {
|
|
96
|
+
connectionName: name,
|
|
97
|
+
error: (0, redis_error_formatter_1.formatRedisError)(error),
|
|
98
|
+
errorCode: (0, redis_error_formatter_1.getErrorCode)(error),
|
|
99
|
+
timestamp: new Date().toISOString(),
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
connection.on('close', () => {
|
|
103
|
+
logger.warn(`Połączenie Redis zamknięte (${name})`, {
|
|
104
|
+
connectionName: name,
|
|
105
|
+
timestamp: new Date().toISOString(),
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
connection.on('reconnecting', () => {
|
|
109
|
+
logger.log(`Ponowne łączenie z Redis (${name})`, {
|
|
110
|
+
connectionName: name,
|
|
111
|
+
timestamp: new Date().toISOString(),
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.default = RedisConnectionPool;
|
|
117
|
+
//# sourceMappingURL=connection-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-pool.js","sourceRoot":"","sources":["../../../src/shared/redis/connection-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const connection_pool_1 = __importDefault(require("./connection-pool"));
|
|
16
|
+
// Mock ioredis
|
|
17
|
+
jest.mock('ioredis', () => {
|
|
18
|
+
const mockRedis = jest.fn().mockImplementation(() => ({
|
|
19
|
+
on: jest.fn(),
|
|
20
|
+
quit: jest.fn().mockResolvedValue('OK'),
|
|
21
|
+
status: 'ready',
|
|
22
|
+
}));
|
|
23
|
+
return { Redis: mockRedis };
|
|
24
|
+
});
|
|
25
|
+
const createMockLogger = () => ({
|
|
26
|
+
log: jest.fn(),
|
|
27
|
+
error: jest.fn(),
|
|
28
|
+
warn: jest.fn(),
|
|
29
|
+
debug: jest.fn(),
|
|
30
|
+
});
|
|
31
|
+
describe('RedisConnectionPool', () => {
|
|
32
|
+
let logger;
|
|
33
|
+
beforeEach(() => {
|
|
34
|
+
logger = createMockLogger();
|
|
35
|
+
jest.clearAllMocks();
|
|
36
|
+
});
|
|
37
|
+
describe('konstruktor', () => {
|
|
38
|
+
it('powinien utworzyć pulę z określoną liczbą połączeń', () => {
|
|
39
|
+
const pool = new connection_pool_1.default({
|
|
40
|
+
size: 4,
|
|
41
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
42
|
+
logger,
|
|
43
|
+
});
|
|
44
|
+
expect(pool.size).toBe(4);
|
|
45
|
+
});
|
|
46
|
+
it('powinien rzucić błąd gdy rozmiar puli < 1', () => {
|
|
47
|
+
expect(() => new connection_pool_1.default({
|
|
48
|
+
size: 0,
|
|
49
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
50
|
+
logger,
|
|
51
|
+
})).toThrow('Rozmiar puli połączeń musi wynosić co najmniej 1');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('next()', () => {
|
|
55
|
+
it('powinien zwracać połączenia w trybie round-robin', () => {
|
|
56
|
+
const pool = new connection_pool_1.default({
|
|
57
|
+
size: 3,
|
|
58
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
59
|
+
logger,
|
|
60
|
+
});
|
|
61
|
+
const first = pool.next();
|
|
62
|
+
const second = pool.next();
|
|
63
|
+
const third = pool.next();
|
|
64
|
+
const fourth = pool.next(); // Wraca do pierwszego
|
|
65
|
+
expect(first).not.toBe(second);
|
|
66
|
+
expect(second).not.toBe(third);
|
|
67
|
+
expect(fourth).toBe(first); // Round-robin wraca do początku
|
|
68
|
+
});
|
|
69
|
+
it('powinien rzucić błąd po zamknięciu puli', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
+
const pool = new connection_pool_1.default({
|
|
71
|
+
size: 2,
|
|
72
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
73
|
+
logger,
|
|
74
|
+
});
|
|
75
|
+
yield pool.close();
|
|
76
|
+
expect(() => pool.next()).toThrow('Pula połączeń jest zamknięta');
|
|
77
|
+
}));
|
|
78
|
+
});
|
|
79
|
+
describe('createDedicated()', () => {
|
|
80
|
+
it('powinien utworzyć nowe dedykowane połączenie', () => {
|
|
81
|
+
const pool = new connection_pool_1.default({
|
|
82
|
+
size: 2,
|
|
83
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
84
|
+
logger,
|
|
85
|
+
});
|
|
86
|
+
const dedicated = pool.createDedicated('consumer-1');
|
|
87
|
+
expect(dedicated).toBeDefined();
|
|
88
|
+
// Dedykowane połączenie nie jest częścią puli
|
|
89
|
+
expect(dedicated).not.toBe(pool.next());
|
|
90
|
+
});
|
|
91
|
+
it('powinien rzucić błąd po zamknięciu puli', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
const pool = new connection_pool_1.default({
|
|
93
|
+
size: 2,
|
|
94
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
95
|
+
logger,
|
|
96
|
+
});
|
|
97
|
+
yield pool.close();
|
|
98
|
+
expect(() => pool.createDedicated('test')).toThrow('Pula połączeń jest zamknięta');
|
|
99
|
+
}));
|
|
100
|
+
});
|
|
101
|
+
describe('close()', () => {
|
|
102
|
+
it('powinien zamknąć wszystkie połączenia', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
|
+
const pool = new connection_pool_1.default({
|
|
104
|
+
size: 3,
|
|
105
|
+
redisOptions: { host: 'localhost', port: 6379 },
|
|
106
|
+
logger,
|
|
107
|
+
});
|
|
108
|
+
yield pool.close();
|
|
109
|
+
// Drugie close nie powinno rzucić błędu (idempotentność)
|
|
110
|
+
yield pool.close();
|
|
111
|
+
}));
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=connection-pool.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-pool.spec.js","sourceRoot":"","sources":["../../../src/shared/redis/connection-pool.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Moduł Redis
|
|
2
|
+
* Moduł Redis — eksporty publiczne
|
|
3
3
|
*/
|
|
4
|
-
export { default as
|
|
5
|
-
export type {
|
|
4
|
+
export { default as RedisConnectionPool } from './connection-pool';
|
|
5
|
+
export type { ConnectionPoolOptions } from './connection-pool';
|
|
6
|
+
export { default as RpcConnectionPool } from './rpc-connection-pool';
|
|
7
|
+
export type { RpcConnectionPoolOptions } from './rpc-connection-pool';
|
|
6
8
|
export { formatRedisError, getErrorCode } from './redis-error-formatter';
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Moduł Redis
|
|
3
|
+
* Moduł Redis — eksporty publiczne
|
|
4
4
|
*/
|
|
5
5
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.getErrorCode = exports.formatRedisError = exports.
|
|
10
|
-
var
|
|
11
|
-
Object.defineProperty(exports, "
|
|
9
|
+
exports.getErrorCode = exports.formatRedisError = exports.RpcConnectionPool = exports.RedisConnectionPool = void 0;
|
|
10
|
+
var connection_pool_1 = require("./connection-pool");
|
|
11
|
+
Object.defineProperty(exports, "RedisConnectionPool", { enumerable: true, get: function () { return __importDefault(connection_pool_1).default; } });
|
|
12
|
+
var rpc_connection_pool_1 = require("./rpc-connection-pool");
|
|
13
|
+
Object.defineProperty(exports, "RpcConnectionPool", { enumerable: true, get: function () { return __importDefault(rpc_connection_pool_1).default; } });
|
|
12
14
|
var redis_error_formatter_1 = require("./redis-error-formatter");
|
|
13
15
|
Object.defineProperty(exports, "formatRedisError", { enumerable: true, get: function () { return redis_error_formatter_1.formatRedisError; } });
|
|
14
16
|
Object.defineProperty(exports, "getErrorCode", { enumerable: true, get: function () { return redis_error_formatter_1.getErrorCode; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/redis/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/redis/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,qDAAmE;AAA1D,uIAAA,OAAO,OAAuB;AAEvC,6DAAqE;AAA5D,yIAAA,OAAO,OAAqB;AAErC,iEAAyE;AAAhE,yHAAA,gBAAgB,OAAA;AAAE,qHAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Redis, type RedisOptions } from 'ioredis';
|
|
2
|
+
import type { ILogger } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Opcje konfiguracji puli RPC połączeń
|
|
5
|
+
*/
|
|
6
|
+
export interface RpcConnectionPoolOptions {
|
|
7
|
+
/** Opcje połączenia ioredis */
|
|
8
|
+
redisOptions: RedisOptions;
|
|
9
|
+
/** Maksymalna liczba równoległych połączeń (domyślnie 50) */
|
|
10
|
+
maxSize: number;
|
|
11
|
+
/** Logger */
|
|
12
|
+
logger: ILogger;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Bounded, lazy pula połączeń dla operacji blokujących (BRPOP)
|
|
16
|
+
*
|
|
17
|
+
* Każde aktywne wywołanie RPC potrzebuje dedykowanego połączenia,
|
|
18
|
+
* ponieważ BRPOP blokuje cały socket do momentu odpowiedzi lub timeout.
|
|
19
|
+
*
|
|
20
|
+
* Połączenia tworzone leniwie przy acquire() i reużywane po release().
|
|
21
|
+
* Jeśli limit osiągnięty — caller czeka na wolne połączenie.
|
|
22
|
+
*
|
|
23
|
+
* DragonflyDB obsługuje tysiące połączeń efektywnie (multi-threaded),
|
|
24
|
+
* więc 50 concurrent BRPOP = ~100KB pamięci + 50 TCP socketów.
|
|
25
|
+
*/
|
|
26
|
+
export default class RpcConnectionPool {
|
|
27
|
+
private readonly options;
|
|
28
|
+
private readonly available;
|
|
29
|
+
private active;
|
|
30
|
+
private readonly waiting;
|
|
31
|
+
/** Wypożyczone połączenia — śledzone do zamknięcia w close() */
|
|
32
|
+
private readonly borrowed;
|
|
33
|
+
private closed;
|
|
34
|
+
constructor(options: RpcConnectionPoolOptions);
|
|
35
|
+
/**
|
|
36
|
+
* Pobiera połączenie z puli (lazy init, czeka jeśli limit osiągnięty)
|
|
37
|
+
* Caller MUSI wywołać release() po zakończeniu BRPOP
|
|
38
|
+
*/
|
|
39
|
+
acquire(): Promise<Redis>;
|
|
40
|
+
/**
|
|
41
|
+
* Zwraca połączenie do puli
|
|
42
|
+
* Jeśli ktoś czeka — oddaje mu połączenie bez odkładania do available
|
|
43
|
+
*/
|
|
44
|
+
release(conn: Redis): void;
|
|
45
|
+
/**
|
|
46
|
+
* Zwraca liczbę aktywnych (wypożyczonych) połączeń
|
|
47
|
+
*/
|
|
48
|
+
get activeCount(): number;
|
|
49
|
+
/**
|
|
50
|
+
* Zwraca liczbę czekających na połączenie
|
|
51
|
+
*/
|
|
52
|
+
get waitingCount(): number;
|
|
53
|
+
/**
|
|
54
|
+
* Zamyka wszystkie połączenia w puli
|
|
55
|
+
*/
|
|
56
|
+
close(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Konfiguruje handlery eventów dla połączenia
|
|
59
|
+
*/
|
|
60
|
+
private setupEventHandlers;
|
|
61
|
+
}
|