rabbitmq-sdk 0.0.1-security → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rabbitmq-sdk might be problematic. Click here for more details.
- package/.eslintrc.js +23 -0
- package/.kiro/specs/sdk-rabbitmq/design.md +369 -0
- package/.kiro/specs/sdk-rabbitmq/requirements.md +97 -0
- package/.kiro/specs/sdk-rabbitmq/tasks.md +248 -0
- package/README.md +273 -5
- package/bun.lock +790 -0
- package/config.example.json +13 -0
- package/dist/components/ConfigurationManager.d.ts +35 -0
- package/dist/components/ConfigurationManager.d.ts.map +1 -0
- package/dist/components/ConfigurationManager.js +118 -0
- package/dist/components/ConfigurationManager.js.map +1 -0
- package/dist/components/ConnectionManager.d.ts +93 -0
- package/dist/components/ConnectionManager.d.ts.map +1 -0
- package/dist/components/ConnectionManager.js +349 -0
- package/dist/components/ConnectionManager.js.map +1 -0
- package/dist/components/DLQHandler.d.ts +81 -0
- package/dist/components/DLQHandler.d.ts.map +1 -0
- package/dist/components/DLQHandler.js +228 -0
- package/dist/components/DLQHandler.js.map +1 -0
- package/dist/components/Logger.d.ts +77 -0
- package/dist/components/Logger.d.ts.map +1 -0
- package/dist/components/Logger.js +193 -0
- package/dist/components/Logger.js.map +1 -0
- package/dist/components/MessagePublisher.d.ts +49 -0
- package/dist/components/MessagePublisher.d.ts.map +1 -0
- package/dist/components/MessagePublisher.js +158 -0
- package/dist/components/MessagePublisher.js.map +1 -0
- package/dist/components/MessageSubscriber.d.ts +108 -0
- package/dist/components/MessageSubscriber.d.ts.map +1 -0
- package/dist/components/MessageSubscriber.js +503 -0
- package/dist/components/MessageSubscriber.js.map +1 -0
- package/dist/components/ResourceCreator.d.ts +89 -0
- package/dist/components/ResourceCreator.d.ts.map +1 -0
- package/dist/components/ResourceCreator.js +352 -0
- package/dist/components/ResourceCreator.js.map +1 -0
- package/dist/components/SdkRabbitmq.d.ts +103 -0
- package/dist/components/SdkRabbitmq.d.ts.map +1 -0
- package/dist/components/SdkRabbitmq.js +364 -0
- package/dist/components/SdkRabbitmq.js.map +1 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +20 -0
- package/dist/components/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IConfiguration.d.ts +35 -0
- package/dist/interfaces/IConfiguration.d.ts.map +1 -0
- package/dist/interfaces/IConfiguration.js +3 -0
- package/dist/interfaces/IConfiguration.js.map +1 -0
- package/dist/interfaces/IConnection.d.ts +21 -0
- package/dist/interfaces/IConnection.d.ts.map +1 -0
- package/dist/interfaces/IConnection.js +3 -0
- package/dist/interfaces/IConnection.js.map +1 -0
- package/dist/interfaces/IDLQ.d.ts +12 -0
- package/dist/interfaces/IDLQ.d.ts.map +1 -0
- package/dist/interfaces/IDLQ.js +3 -0
- package/dist/interfaces/IDLQ.js.map +1 -0
- package/dist/interfaces/IErrors.d.ts +33 -0
- package/dist/interfaces/IErrors.d.ts.map +1 -0
- package/dist/interfaces/IErrors.js +56 -0
- package/dist/interfaces/IErrors.js.map +1 -0
- package/dist/interfaces/ILogger.d.ts +14 -0
- package/dist/interfaces/ILogger.d.ts.map +1 -0
- package/dist/interfaces/ILogger.js +3 -0
- package/dist/interfaces/ILogger.js.map +1 -0
- package/dist/interfaces/IMessage.d.ts +52 -0
- package/dist/interfaces/IMessage.d.ts.map +1 -0
- package/dist/interfaces/IMessage.js +3 -0
- package/dist/interfaces/IMessage.js.map +1 -0
- package/dist/interfaces/IResource.d.ts +31 -0
- package/dist/interfaces/IResource.d.ts.map +1 -0
- package/dist/interfaces/IResource.js +3 -0
- package/dist/interfaces/IResource.js.map +1 -0
- package/dist/interfaces/ISdkRabbitmq.d.ts +17 -0
- package/dist/interfaces/ISdkRabbitmq.d.ts.map +1 -0
- package/dist/interfaces/ISdkRabbitmq.js +3 -0
- package/dist/interfaces/ISdkRabbitmq.js.map +1 -0
- package/dist/interfaces/index.d.ts +9 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +33 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/utils/configSchema.d.ts +8 -0
- package/dist/utils/configSchema.d.ts.map +1 -0
- package/dist/utils/configSchema.js +51 -0
- package/dist/utils/configSchema.js.map +1 -0
- package/docker-compose.yml +24 -0
- package/example.ts +65 -0
- package/examples/README-dynamic-routing.md +155 -0
- package/examples/bind-unbind-example.js +56 -0
- package/examples/test-chatbot-exchange.ts +83 -0
- package/examples/test-dynamic-routing-flow.js +299 -0
- package/examples/test-dynamic-routing-flow.ts +355 -0
- package/examples/test-no-disconnect.ts +0 -0
- package/examples/test-raw-rabbitmq.js +68 -0
- package/examples/test-same-channel.ts +81 -0
- package/examples/test-schedule-flow.ts +713 -0
- package/examples/test-simple-greeting.ts +66 -0
- package/examples/test-simple-schedule.ts +76 -0
- package/examples/test-wildcard.ts +364 -0
- package/jest.config.js +17 -0
- package/package.json +42 -4
- package/preinstall.js +1 -0
- package/prompts/test-dynamic-routing-flow.md +46 -0
- package/run.js +4 -0
- package/scripts/run-dynamic-routing-test.ts +31 -0
- package/src/.gitkeep +1 -0
- package/src/components/.gitkeep +1 -0
- package/src/components/ConfigurationManager.ts +104 -0
- package/src/components/ConnectionManager.ts +357 -0
- package/src/components/DLQHandler.ts +271 -0
- package/src/components/Logger.ts +224 -0
- package/src/components/MessagePublisher.ts +180 -0
- package/src/components/MessageSubscriber.ts +597 -0
- package/src/components/ResourceCreator.ts +411 -0
- package/src/components/SdkRabbitmq.ts +443 -0
- package/src/components/__tests__/ConfigurationManager.test.ts +357 -0
- package/src/components/__tests__/ConnectionManager.test.ts +387 -0
- package/src/components/__tests__/DLQHandler.test.ts +399 -0
- package/src/components/__tests__/Logger.test.ts +354 -0
- package/src/components/__tests__/MessagePublisher.test.ts +337 -0
- package/src/components/__tests__/MessageSubscriber.test.ts +542 -0
- package/src/components/__tests__/ResourceCreator.test.ts +465 -0
- package/src/components/__tests__/SdkRabbitmq.integration.test.ts +433 -0
- package/src/components/index.ts +8 -0
- package/src/index.ts +11 -0
- package/src/interfaces/.gitkeep +1 -0
- package/src/interfaces/IConfiguration.ts +38 -0
- package/src/interfaces/IConnection.ts +27 -0
- package/src/interfaces/IDLQ.ts +13 -0
- package/src/interfaces/IErrors.ts +53 -0
- package/src/interfaces/ILogger.ts +16 -0
- package/src/interfaces/IMessage.ts +65 -0
- package/src/interfaces/IResource.ts +35 -0
- package/src/interfaces/ISdkRabbitmq.ts +26 -0
- package/src/interfaces/index.ts +23 -0
- package/src/utils/.gitkeep +1 -0
- package/src/utils/configSchema.ts +58 -0
- package/tsconfig.json +34 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceCreator = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
/**
|
|
6
|
+
* ResourceCreator handles automatic creation of exchanges, queues, and bindings
|
|
7
|
+
* Implements caching and existence checking to avoid duplicate creation attempts
|
|
8
|
+
*/
|
|
9
|
+
class ResourceCreator {
|
|
10
|
+
constructor(connectionManager, config) {
|
|
11
|
+
this.createdExchanges = new Set();
|
|
12
|
+
this.createdQueues = new Set();
|
|
13
|
+
this.createdBindings = new Set();
|
|
14
|
+
this.existingExchanges = new Set();
|
|
15
|
+
this.existingQueues = new Set();
|
|
16
|
+
this.connectionManager = connectionManager;
|
|
17
|
+
this.logger = Logger_1.Logger.createComponentLogger('ResourceCreator', config);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if exchange exists without creating it
|
|
21
|
+
* @param exchange Exchange name
|
|
22
|
+
* @returns Promise<boolean> indicating if exchange exists
|
|
23
|
+
*/
|
|
24
|
+
async checkExchangeExists(exchange) {
|
|
25
|
+
if (this.existingExchanges.has(exchange)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return this.connectionManager.executeOperation(async () => {
|
|
29
|
+
const connection = this.connectionManager.getConnection();
|
|
30
|
+
if (!connection) {
|
|
31
|
+
throw new Error('No active connection to RabbitMQ');
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const channel = await connection.createChannel();
|
|
35
|
+
// Use checkExchange to verify existence without creating
|
|
36
|
+
await channel.checkExchange(exchange);
|
|
37
|
+
await channel.close();
|
|
38
|
+
// Cache that exchange exists
|
|
39
|
+
this.existingExchanges.add(exchange);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
// Exchange doesn't exist or other error
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if queue exists without creating it
|
|
50
|
+
* @param queue Queue name
|
|
51
|
+
* @returns Promise<boolean> indicating if queue exists
|
|
52
|
+
*/
|
|
53
|
+
async checkQueueExists(queue) {
|
|
54
|
+
if (this.existingQueues.has(queue)) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return this.connectionManager.executeOperation(async () => {
|
|
58
|
+
const connection = this.connectionManager.getConnection();
|
|
59
|
+
if (!connection) {
|
|
60
|
+
throw new Error('No active connection to RabbitMQ');
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const channel = await connection.createChannel();
|
|
64
|
+
// Use checkQueue to verify existence without creating
|
|
65
|
+
await channel.checkQueue(queue);
|
|
66
|
+
await channel.close();
|
|
67
|
+
// Cache that queue exists
|
|
68
|
+
this.existingQueues.add(queue);
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
// Queue doesn't exist or other error
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Ensure exchange exists, create if it doesn't
|
|
79
|
+
* @param exchange Exchange name
|
|
80
|
+
* @param type Exchange type (default: 'direct')
|
|
81
|
+
* @param options Exchange options
|
|
82
|
+
*/
|
|
83
|
+
async ensureExchange(exchange, type = 'topic', options = {}) {
|
|
84
|
+
if (!exchange) {
|
|
85
|
+
throw new Error('Exchange name is required');
|
|
86
|
+
}
|
|
87
|
+
const exchangeKey = `${exchange}:${type}`;
|
|
88
|
+
// Check cache first
|
|
89
|
+
if (this.createdExchanges.has(exchangeKey)) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// Check if exchange already exists
|
|
93
|
+
try {
|
|
94
|
+
const exists = await this.checkExchangeExists(exchange);
|
|
95
|
+
if (exists) {
|
|
96
|
+
this.createdExchanges.add(exchangeKey);
|
|
97
|
+
this.logger.info(`Exchange already exists`, { exchange, type });
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
this.logger.warn(`Could not check exchange existence`, {
|
|
103
|
+
exchange,
|
|
104
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return this.connectionManager.executeOperation(async () => {
|
|
108
|
+
const connection = this.connectionManager.getConnection();
|
|
109
|
+
if (!connection) {
|
|
110
|
+
throw new Error('No active connection to RabbitMQ');
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const channel = await connection.createChannel();
|
|
114
|
+
// Set default options
|
|
115
|
+
const exchangeOptions = {
|
|
116
|
+
durable: true,
|
|
117
|
+
autoDelete: false,
|
|
118
|
+
...options
|
|
119
|
+
};
|
|
120
|
+
await channel.assertExchange(exchange, type, exchangeOptions);
|
|
121
|
+
await channel.close();
|
|
122
|
+
// Cache successful creation
|
|
123
|
+
this.createdExchanges.add(exchangeKey);
|
|
124
|
+
this.existingExchanges.add(exchange);
|
|
125
|
+
this.logger.logOperation('createExchange', `Exchange created successfully`, {
|
|
126
|
+
exchange,
|
|
127
|
+
type,
|
|
128
|
+
options: exchangeOptions
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
this.logger.logError(`Failed to ensure exchange`, error, { exchange, type });
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Ensure queue exists, create if it doesn't
|
|
139
|
+
* @param queue Queue name
|
|
140
|
+
* @param options Queue options
|
|
141
|
+
*/
|
|
142
|
+
async ensureQueue(queue, options = {}) {
|
|
143
|
+
if (!queue) {
|
|
144
|
+
throw new Error('Queue name is required');
|
|
145
|
+
}
|
|
146
|
+
// Check cache first
|
|
147
|
+
if (this.createdQueues.has(queue)) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Check if queue already exists
|
|
151
|
+
try {
|
|
152
|
+
const exists = await this.checkQueueExists(queue);
|
|
153
|
+
if (exists) {
|
|
154
|
+
this.createdQueues.add(queue);
|
|
155
|
+
this.logger.info(`Queue already exists`, { queue });
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.logger.warn(`Could not check queue existence`, {
|
|
161
|
+
queue,
|
|
162
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return this.connectionManager.executeOperation(async () => {
|
|
166
|
+
const connection = this.connectionManager.getConnection();
|
|
167
|
+
if (!connection) {
|
|
168
|
+
throw new Error('No active connection to RabbitMQ');
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
const channel = await connection.createChannel();
|
|
172
|
+
// Set default options
|
|
173
|
+
const queueOptions = {
|
|
174
|
+
durable: true,
|
|
175
|
+
exclusive: false,
|
|
176
|
+
autoDelete: false,
|
|
177
|
+
...options
|
|
178
|
+
};
|
|
179
|
+
await channel.assertQueue(queue, queueOptions);
|
|
180
|
+
await channel.close();
|
|
181
|
+
// Cache successful creation
|
|
182
|
+
this.createdQueues.add(queue);
|
|
183
|
+
this.existingQueues.add(queue);
|
|
184
|
+
this.logger.logOperation('createQueue', `Queue created successfully`, {
|
|
185
|
+
queue,
|
|
186
|
+
options: queueOptions
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
this.logger.logError(`Failed to ensure queue`, error, { queue });
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Bind queue to exchange with routing key
|
|
197
|
+
* @param queue Queue name
|
|
198
|
+
* @param exchange Exchange name
|
|
199
|
+
* @param routingKey Routing key for binding
|
|
200
|
+
*/
|
|
201
|
+
async bindQueue(queue, exchange, routingKey) {
|
|
202
|
+
if (!queue) {
|
|
203
|
+
throw new Error('Queue name is required');
|
|
204
|
+
}
|
|
205
|
+
if (!exchange) {
|
|
206
|
+
throw new Error('Exchange name is required');
|
|
207
|
+
}
|
|
208
|
+
if (!routingKey) {
|
|
209
|
+
throw new Error('Routing key is required');
|
|
210
|
+
}
|
|
211
|
+
const bindingKey = `${queue}:${exchange}:${routingKey}`;
|
|
212
|
+
// Check cache first
|
|
213
|
+
if (this.createdBindings.has(bindingKey)) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
return this.connectionManager.executeOperation(async () => {
|
|
217
|
+
const connection = this.connectionManager.getConnection();
|
|
218
|
+
if (!connection) {
|
|
219
|
+
throw new Error('No active connection to RabbitMQ');
|
|
220
|
+
}
|
|
221
|
+
try {
|
|
222
|
+
const channel = await connection.createChannel();
|
|
223
|
+
await channel.bindQueue(queue, exchange, routingKey);
|
|
224
|
+
await channel.close();
|
|
225
|
+
// Cache successful binding
|
|
226
|
+
this.createdBindings.add(bindingKey);
|
|
227
|
+
this.logger.logOperation('bindQueue', `Queue bound to exchange successfully`, {
|
|
228
|
+
queue,
|
|
229
|
+
exchange,
|
|
230
|
+
routingKey
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
this.logger.logError(`Failed to bind queue to exchange`, error, {
|
|
235
|
+
queue,
|
|
236
|
+
exchange,
|
|
237
|
+
routingKey
|
|
238
|
+
});
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Unbind queue from exchange with routing key
|
|
245
|
+
* @param queue Queue name
|
|
246
|
+
* @param exchange Exchange name
|
|
247
|
+
* @param routingKey Routing key for unbinding
|
|
248
|
+
*/
|
|
249
|
+
async unbindQueue(queue, exchange, routingKey) {
|
|
250
|
+
if (!queue) {
|
|
251
|
+
throw new Error('Queue name is required');
|
|
252
|
+
}
|
|
253
|
+
if (!exchange) {
|
|
254
|
+
throw new Error('Exchange name is required');
|
|
255
|
+
}
|
|
256
|
+
if (!routingKey) {
|
|
257
|
+
throw new Error('Routing key is required');
|
|
258
|
+
}
|
|
259
|
+
const bindingKey = `${queue}:${exchange}:${routingKey}`;
|
|
260
|
+
return this.connectionManager.executeOperation(async () => {
|
|
261
|
+
const connection = this.connectionManager.getConnection();
|
|
262
|
+
if (!connection) {
|
|
263
|
+
throw new Error('No active connection to RabbitMQ');
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
const channel = await connection.createChannel();
|
|
267
|
+
await channel.unbindQueue(queue, exchange, routingKey);
|
|
268
|
+
await channel.close();
|
|
269
|
+
// Remove from cache if it exists
|
|
270
|
+
this.createdBindings.delete(bindingKey);
|
|
271
|
+
this.logger.logOperation('unbindQueue', `Queue unbound from exchange successfully`, {
|
|
272
|
+
queue,
|
|
273
|
+
exchange,
|
|
274
|
+
routingKey
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
this.logger.logError(`Failed to unbind queue from exchange`, error, {
|
|
279
|
+
queue,
|
|
280
|
+
exchange,
|
|
281
|
+
routingKey
|
|
282
|
+
});
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Clear all caches (useful for testing or reset scenarios)
|
|
289
|
+
*/
|
|
290
|
+
clearCache() {
|
|
291
|
+
this.createdExchanges.clear();
|
|
292
|
+
this.createdQueues.clear();
|
|
293
|
+
this.createdBindings.clear();
|
|
294
|
+
this.existingExchanges.clear();
|
|
295
|
+
this.existingQueues.clear();
|
|
296
|
+
this.logger.info('ResourceCreator cache cleared');
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get cache statistics for monitoring
|
|
300
|
+
*/
|
|
301
|
+
getCacheStats() {
|
|
302
|
+
return {
|
|
303
|
+
created: {
|
|
304
|
+
exchanges: this.createdExchanges.size,
|
|
305
|
+
queues: this.createdQueues.size,
|
|
306
|
+
bindings: this.createdBindings.size
|
|
307
|
+
},
|
|
308
|
+
existing: {
|
|
309
|
+
exchanges: this.existingExchanges.size,
|
|
310
|
+
queues: this.existingQueues.size
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Validate resource name format
|
|
316
|
+
* @param name Resource name to validate
|
|
317
|
+
* @param type Resource type for error messages
|
|
318
|
+
*/
|
|
319
|
+
validateResourceName(name, type) {
|
|
320
|
+
if (!name || typeof name !== 'string') {
|
|
321
|
+
throw new Error(`${type} name must be a non-empty string`);
|
|
322
|
+
}
|
|
323
|
+
if (name.length > 255) {
|
|
324
|
+
throw new Error(`${type} name cannot exceed 255 characters`);
|
|
325
|
+
}
|
|
326
|
+
// RabbitMQ naming conventions
|
|
327
|
+
const invalidChars = /[^a-zA-Z0-9._-]/;
|
|
328
|
+
if (invalidChars.test(name)) {
|
|
329
|
+
throw new Error(`${type} name contains invalid characters. Only alphanumeric, dots, hyphens, and underscores are allowed`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Enhanced ensure exchange with validation
|
|
334
|
+
*/
|
|
335
|
+
async ensureExchangeWithValidation(exchange, type = 'topic', options = {}) {
|
|
336
|
+
this.validateResourceName(exchange, 'Exchange');
|
|
337
|
+
const validTypes = ['direct', 'topic', 'fanout', 'headers'];
|
|
338
|
+
if (!validTypes.includes(type)) {
|
|
339
|
+
throw new Error(`Invalid exchange type '${type}'. Valid types: ${validTypes.join(', ')}`);
|
|
340
|
+
}
|
|
341
|
+
return this.ensureExchange(exchange, type, options);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Enhanced ensure queue with validation
|
|
345
|
+
*/
|
|
346
|
+
async ensureQueueWithValidation(queue, options = {}) {
|
|
347
|
+
this.validateResourceName(queue, 'Queue');
|
|
348
|
+
return this.ensureQueue(queue, options);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
exports.ResourceCreator = ResourceCreator;
|
|
352
|
+
//# sourceMappingURL=ResourceCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceCreator.js","sourceRoot":"","sources":["../../src/components/ResourceCreator.ts"],"names":[],"mappings":";;;AAGA,qCAAkC;AAGlC;;;GAGG;AACH,MAAa,eAAe;IAS1B,YAAY,iBAAoC,EAAE,MAAkC;QAP5E,qBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,oBAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,sBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAIzC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,eAAM,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QAChD,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAO,UAAkB,CAAC,aAAa,EAAE,CAAC;gBAE1D,yDAAyD;gBACzD,MAAM,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEtB,6BAA6B;gBAC7B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrC,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wCAAwC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAC1C,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAO,UAAkB,CAAC,aAAa,EAAE,CAAC;gBAE1D,sDAAsD;gBACtD,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEtB,0BAA0B;gBAC1B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qCAAqC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CACzB,QAAgB,EAChB,OAAe,OAAO,EACtB,UAA2B,EAAE;QAE7B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;QAE1C,oBAAoB;QACpB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;gBACrD,QAAQ;gBACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAO,UAAkB,CAAC,aAAa,EAAE,CAAC;gBAE1D,sBAAsB;gBACtB,MAAM,eAAe,GAAG;oBACtB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,KAAK;oBACjB,GAAG,OAAO;iBACX,CAAC;gBAEF,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;gBAC9D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEtB,4BAA4B;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAErC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,+BAA+B,EAAE;oBAC1E,QAAQ;oBACR,IAAI;oBACJ,OAAO,EAAE,eAAe;iBACzB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,KAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,UAAwB,EAAE;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAClD,KAAK;gBACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAO,UAAkB,CAAC,aAAa,EAAE,CAAC;gBAE1D,sBAAsB;gBACtB,MAAM,YAAY,GAAG;oBACnB,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,KAAK;oBACjB,GAAG,OAAO;iBACX,CAAC;gBAEF,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAC/C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEtB,4BAA4B;gBAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE/B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,4BAA4B,EAAE;oBACpE,KAAK;oBACL,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,KAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1E,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAE,UAAkB;QACxE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAExD,oBAAoB;QACpB,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAO,UAAkB,CAAC,aAAa,EAAE,CAAC;gBAE1D,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACrD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEtB,2BAA2B;gBAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAErC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,sCAAsC,EAAE;oBAC5E,KAAK;oBACL,QAAQ;oBACR,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kCAAkC,EAAE,KAAc,EAAE;oBACvE,KAAK;oBACL,QAAQ;oBACR,UAAU;iBACX,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,QAAgB,EAAE,UAAkB;QAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAExD,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAO,UAAkB,CAAC,aAAa,EAAE,CAAC;gBAE1D,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACvD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;gBAEtB,iCAAiC;gBACjC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAExC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,0CAA0C,EAAE;oBAClF,KAAK;oBACL,QAAQ;oBACR,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sCAAsC,EAAE,KAAc,EAAE;oBAC3E,KAAK;oBACL,QAAQ;oBACR,UAAU;iBACX,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,UAAU;QACf,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,aAAa;QAIlB,OAAO;YACL,OAAO,EAAE;gBACP,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;gBACrC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;gBAC/B,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI;aACpC;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI;gBACtC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI;aACjC;SACF,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,IAAY,EAAE,IAAY;QACrD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oCAAoC,CAAC,CAAC;QAC/D,CAAC;QAED,8BAA8B;QAC9B,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACvC,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kGAAkG,CAAC,CAAC;QAC7H,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,4BAA4B,CACvC,QAAgB,EAChB,OAAe,OAAO,EACtB,UAA2B,EAAE;QAE7B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,mBAAmB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,yBAAyB,CAAC,KAAa,EAAE,UAAwB,EAAE;QAC9E,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF;AAhZD,0CAgZC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ISdkRabbitmq } from '../interfaces/ISdkRabbitmq';
|
|
2
|
+
import { MessageCallback } from '../interfaces/IMessage';
|
|
3
|
+
/**
|
|
4
|
+
* Main SdkRabbitmq singleton class that provides the public API
|
|
5
|
+
* Implements singleton pattern to ensure single connection per application
|
|
6
|
+
*/
|
|
7
|
+
export declare class SdkRabbitmq implements ISdkRabbitmq {
|
|
8
|
+
private static instance;
|
|
9
|
+
private static isInitializing;
|
|
10
|
+
private configurationManager;
|
|
11
|
+
private connectionManager;
|
|
12
|
+
private messagePublisher;
|
|
13
|
+
private messageSubscriber;
|
|
14
|
+
private resourceCreator;
|
|
15
|
+
private dlqHandler;
|
|
16
|
+
private logger;
|
|
17
|
+
private config;
|
|
18
|
+
private isInitialized;
|
|
19
|
+
/**
|
|
20
|
+
* Private constructor to enforce singleton pattern
|
|
21
|
+
*/
|
|
22
|
+
private constructor();
|
|
23
|
+
/**
|
|
24
|
+
* Get singleton instance of SdkRabbitmq
|
|
25
|
+
* Returns existing instance if available, creates new one otherwise
|
|
26
|
+
*/
|
|
27
|
+
static getInstance(): Promise<SdkRabbitmq>;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize all SDK components and establish connection
|
|
30
|
+
*/
|
|
31
|
+
private initializeComponents;
|
|
32
|
+
/**
|
|
33
|
+
|
|
34
|
+
* Publish a message to an exchange
|
|
35
|
+
* @param exchange Exchange name (required)
|
|
36
|
+
* @param routingKey Routing key for message routing (required)
|
|
37
|
+
* @param payload Message payload to be JSON serialized (required)
|
|
38
|
+
* @returns Promise<boolean> - true for success, false for failure
|
|
39
|
+
*/
|
|
40
|
+
publish(exchange: string, routingKey: string, payload: any): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Subscribe to messages from a queue
|
|
43
|
+
* @param exchange Exchange name (required)
|
|
44
|
+
* @param queue Queue name (required)
|
|
45
|
+
* @param routingKey Routing key for binding (required)
|
|
46
|
+
* @param callback Message callback function (required)
|
|
47
|
+
*/
|
|
48
|
+
subscribe(exchange: string, queue: string, routingKey: string, callback: MessageCallback): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Disconnect from RabbitMQ gracefully
|
|
51
|
+
* Performs cleanup of all components and closes connection
|
|
52
|
+
*/
|
|
53
|
+
disconnect(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Validate publish method parameters
|
|
56
|
+
* @param exchange Exchange name
|
|
57
|
+
* @param routingKey Routing key
|
|
58
|
+
* @param payload Message payload
|
|
59
|
+
*/
|
|
60
|
+
private validatePublishParameters;
|
|
61
|
+
/**
|
|
62
|
+
* Validate subscribe method parameters
|
|
63
|
+
* @param exchange Exchange name
|
|
64
|
+
* @param queue Queue name
|
|
65
|
+
* @param routingKey Routing key
|
|
66
|
+
* @param callback Message callback function
|
|
67
|
+
*/
|
|
68
|
+
private validateSubscribeParameters;
|
|
69
|
+
/**
|
|
70
|
+
* Validate bind/unbind method parameters
|
|
71
|
+
* @param queue Queue name
|
|
72
|
+
* @param exchange Exchange name
|
|
73
|
+
* @param routingKey Routing key
|
|
74
|
+
*/
|
|
75
|
+
private validateBindParameters;
|
|
76
|
+
/**
|
|
77
|
+
* Get SDK initialization status
|
|
78
|
+
*/
|
|
79
|
+
isReady(): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Bind a queue to an exchange with a routing key
|
|
82
|
+
* @param queue Queue name (required)
|
|
83
|
+
* @param exchange Exchange name (required)
|
|
84
|
+
* @param routingKey Routing key for binding (required)
|
|
85
|
+
*/
|
|
86
|
+
bind(queue: string, exchange: string, routingKey: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Unbind a queue from an exchange with a routing key
|
|
89
|
+
* @param queue Queue name (required)
|
|
90
|
+
* @param exchange Exchange name (required)
|
|
91
|
+
* @param routingKey Routing key for unbinding (required)
|
|
92
|
+
*/
|
|
93
|
+
unbind(queue: string, exchange: string, routingKey: string): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Get active consumers for monitoring
|
|
96
|
+
*/
|
|
97
|
+
getActiveConsumers(): string[];
|
|
98
|
+
/**
|
|
99
|
+
* Reset singleton instance (for testing purposes)
|
|
100
|
+
*/
|
|
101
|
+
static resetInstance(): void;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=SdkRabbitmq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdkRabbitmq.d.ts","sourceRoot":"","sources":["../../src/components/SdkRabbitmq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IACnD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAS;IAEtC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,OAAO;IAgBP;;;OAGG;WACiB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IA2CvD;;OAEG;YACW,oBAAoB;IAqClC;;;;;;;OAOG;IACU,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC1F;;;;;;OAMG;IACU,SAAS,CACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAiChB;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCxC;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAuBnC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAc9B;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB;;;;;OAKG;IACU,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCrF;;;;;OAKG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvF;;OAEG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAOrC;;OAEG;WACW,aAAa,IAAI,IAAI;CASpC"}
|