rabbitmq-with-retry-and-dlq 1.0.18 → 1.0.20
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 +190 -12
- package/dist/consumerMq.d.ts +64 -1
- package/dist/consumerMq.d.ts.map +1 -1
- package/dist/consumerMq.js +198 -0
- package/dist/consumerMq.js.map +1 -1
- package/dist/publisherMq.d.ts +23 -0
- package/dist/publisherMq.d.ts.map +1 -1
- package/dist/publisherMq.js +39 -0
- package/dist/publisherMq.js.map +1 -1
- package/dist/test-connection.d.ts +2 -0
- package/dist/test-connection.d.ts.map +1 -0
- package/dist/test-connection.js +38 -0
- package/dist/test-connection.js.map +1 -0
- package/dist/test-wrong-url.d.ts +2 -0
- package/dist/test-wrong-url.d.ts.map +1 -0
- package/dist/test-wrong-url.js +34 -0
- package/dist/test-wrong-url.js.map +1 -0
- package/dist/test.d.ts +19 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +446 -0
- package/dist/test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@ A production-ready TypeScript RabbitMQ library with automatic retry, exponential
|
|
|
10
10
|
- 🔌 **Auto-Reconnection** - Handles network issues automatically
|
|
11
11
|
- 📦 **TypeScript** - Full type safety
|
|
12
12
|
- 🎯 **Exchange Support** - Direct, topic, fanout, headers
|
|
13
|
+
- 🏭 **Industry Best Practice** - Separation of concerns (Publisher→Exchange, Consumer→Queue)
|
|
13
14
|
|
|
14
15
|
## Installation
|
|
15
16
|
|
|
@@ -64,6 +65,116 @@ await publisher.publishToQueue({
|
|
|
64
65
|
});
|
|
65
66
|
```
|
|
66
67
|
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Industry Best Practice: Separation of Concerns
|
|
71
|
+
|
|
72
|
+
This library follows the RabbitMQ best practice pattern:
|
|
73
|
+
|
|
74
|
+
- **Publisher** → Owns **Exchanges** (knows the topic/domain)
|
|
75
|
+
- **Consumer** → Owns **Queues** and **Bindings** (decides what to subscribe to)
|
|
76
|
+
|
|
77
|
+
This is cleaner because:
|
|
78
|
+
1. Publishers don't need to know about queues
|
|
79
|
+
2. Consumers can create their own queues and choose their bindings
|
|
80
|
+
3. Multiple consumers can bind differently to the same exchange
|
|
81
|
+
|
|
82
|
+
### Publisher: Assert Exchange
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
import { publisher } from 'rabbitmq-with-retry-and-dlq';
|
|
86
|
+
|
|
87
|
+
// Assert a single exchange
|
|
88
|
+
await publisher.assertExchange('orders');
|
|
89
|
+
|
|
90
|
+
// Assert with exchange type
|
|
91
|
+
await publisher.assertExchange('events', { exchangeType: 'topic' });
|
|
92
|
+
|
|
93
|
+
// Assert multiple exchanges
|
|
94
|
+
await publisher.assertExchange(['orders', 'payments', 'notifications']);
|
|
95
|
+
|
|
96
|
+
// With options
|
|
97
|
+
await publisher.assertExchange('orders', {
|
|
98
|
+
exchangeType: 'direct', // 'direct' | 'topic' | 'fanout' | 'headers' (default: 'direct')
|
|
99
|
+
durable: true, // Survives broker restart (default: true)
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Consumer: Assert Queues
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { consumer } from 'rabbitmq-with-retry-and-dlq';
|
|
107
|
+
|
|
108
|
+
// Assert a single queue
|
|
109
|
+
await consumer.assertQueues('orders-worker');
|
|
110
|
+
|
|
111
|
+
// Assert multiple queues
|
|
112
|
+
await consumer.assertQueues(['orders-worker', 'payments-worker']);
|
|
113
|
+
|
|
114
|
+
// Assert queue with retry/DLQ configuration
|
|
115
|
+
await consumer.assertQueues('orders-worker', {
|
|
116
|
+
durable: true, // Queue survives restart (default: true)
|
|
117
|
+
retryConfig: {
|
|
118
|
+
maxRetries: 5,
|
|
119
|
+
retryDelayMs: 2000,
|
|
120
|
+
backoffStrategy: 'exponential',
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Consumer: Bind Queue to Exchange
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// Bind queue to exchange with routing key
|
|
129
|
+
await consumer.bindQueue('orders-worker', 'orders', 'order.created');
|
|
130
|
+
|
|
131
|
+
// Bind with pattern (for topic exchanges)
|
|
132
|
+
await consumer.bindQueue('all-orders', 'events', 'order.*');
|
|
133
|
+
|
|
134
|
+
// Multiple bindings to same queue
|
|
135
|
+
await consumer.bindQueue('orders-worker', 'orders', 'order.created');
|
|
136
|
+
await consumer.bindQueue('orders-worker', 'orders', 'order.updated');
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Complete Best Practice Example
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
// === PUBLISHER SIDE ===
|
|
143
|
+
// Publisher only creates exchanges (doesn't know about queues)
|
|
144
|
+
await publisher.assertExchange('orders', { exchangeType: 'topic' });
|
|
145
|
+
|
|
146
|
+
await publisher.publishToExchange({
|
|
147
|
+
exchangeName: 'orders',
|
|
148
|
+
routingKey: 'order.created',
|
|
149
|
+
queueName: 'orders-processor', // For retry config lookup only
|
|
150
|
+
message: { orderId: 123, amount: 99.99 },
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// === CONSUMER SIDE ===
|
|
154
|
+
// Consumer creates its own queues and decides what to subscribe to
|
|
155
|
+
await consumer.assertQueues('orders-processor', {
|
|
156
|
+
retryConfig: { maxRetries: 3, retryDelayMs: 5000 }
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Bind to exchange (consumer decides which routing keys to receive)
|
|
160
|
+
await consumer.bindQueue('orders-processor', 'orders', 'order.created');
|
|
161
|
+
await consumer.bindQueue('orders-processor', 'orders', 'order.updated');
|
|
162
|
+
|
|
163
|
+
// Start consuming
|
|
164
|
+
await consumer.consumeQueue({
|
|
165
|
+
queueName: 'orders-processor',
|
|
166
|
+
onMessage: async (message) => {
|
|
167
|
+
console.log('Processing order:', message);
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Alternative: Publisher-Managed Queues
|
|
175
|
+
|
|
176
|
+
For simpler use cases, the publisher can also manage queues (backward compatible):
|
|
177
|
+
|
|
67
178
|
### 3. Assert Queues (with Retry Config)
|
|
68
179
|
|
|
69
180
|
**Note:** `assertQueues()` is **idempotent** - it safely skips queues that already exist. You can call it multiple times without errors.
|
|
@@ -236,7 +347,7 @@ retryConfig: {
|
|
|
236
347
|
|
|
237
348
|
---
|
|
238
349
|
|
|
239
|
-
## Complete Example
|
|
350
|
+
## Complete Example (Best Practice Pattern)
|
|
240
351
|
|
|
241
352
|
```typescript
|
|
242
353
|
import express from 'express';
|
|
@@ -267,8 +378,12 @@ async function startApp() {
|
|
|
267
378
|
console.error('RabbitMQ Error:', errorEvent);
|
|
268
379
|
});
|
|
269
380
|
|
|
270
|
-
// 3. Assert
|
|
271
|
-
await publisher.
|
|
381
|
+
// 3. Publisher: Assert exchange (publisher owns exchanges)
|
|
382
|
+
await publisher.assertExchange('orders', { exchangeType: 'topic' });
|
|
383
|
+
console.log('✓ Exchange asserted');
|
|
384
|
+
|
|
385
|
+
// 4. Consumer: Assert queues with retry config (consumer owns queues)
|
|
386
|
+
await consumer.assertQueues('orders-processor', {
|
|
272
387
|
retryConfig: {
|
|
273
388
|
maxRetries: 5,
|
|
274
389
|
retryDelayMs: 2000,
|
|
@@ -278,9 +393,14 @@ async function startApp() {
|
|
|
278
393
|
});
|
|
279
394
|
console.log('✓ Queues asserted');
|
|
280
395
|
|
|
281
|
-
//
|
|
396
|
+
// 5. Consumer: Bind queue to exchange (consumer decides what to receive)
|
|
397
|
+
await consumer.bindQueue('orders-processor', 'orders', 'order.created');
|
|
398
|
+
await consumer.bindQueue('orders-processor', 'orders', 'order.updated');
|
|
399
|
+
console.log('✓ Queue bindings created');
|
|
400
|
+
|
|
401
|
+
// 6. Start consumer
|
|
282
402
|
await consumer.consumeQueue({
|
|
283
|
-
queueName: 'orders',
|
|
403
|
+
queueName: 'orders-processor',
|
|
284
404
|
onMessage: async (message) => {
|
|
285
405
|
console.log('Processing order:', message);
|
|
286
406
|
await processOrder(message);
|
|
@@ -288,7 +408,7 @@ async function startApp() {
|
|
|
288
408
|
});
|
|
289
409
|
console.log('✓ Consumer started');
|
|
290
410
|
|
|
291
|
-
//
|
|
411
|
+
// 7. Start server
|
|
292
412
|
app.listen(3000, () => {
|
|
293
413
|
console.log('✓ Server running on port 3000');
|
|
294
414
|
});
|
|
@@ -299,11 +419,13 @@ async function startApp() {
|
|
|
299
419
|
}
|
|
300
420
|
}
|
|
301
421
|
|
|
302
|
-
// API endpoint
|
|
422
|
+
// API endpoint - Publisher only knows about exchanges
|
|
303
423
|
app.post('/orders', async (req, res) => {
|
|
304
424
|
try {
|
|
305
|
-
await publisher.
|
|
306
|
-
|
|
425
|
+
await publisher.publishToExchange({
|
|
426
|
+
exchangeName: 'orders',
|
|
427
|
+
routingKey: 'order.created',
|
|
428
|
+
queueName: 'orders-processor', // For retry config lookup
|
|
307
429
|
message: req.body,
|
|
308
430
|
});
|
|
309
431
|
res.json({ success: true });
|
|
@@ -335,18 +457,71 @@ startApp();
|
|
|
335
457
|
|
|
336
458
|
---
|
|
337
459
|
|
|
460
|
+
## API Reference
|
|
461
|
+
|
|
462
|
+
### Publisher Methods
|
|
463
|
+
|
|
464
|
+
| Method | Description |
|
|
465
|
+
|--------|-------------|
|
|
466
|
+
| `assertExchange(names, options?)` | Create exchange(s) - Publisher owns exchanges |
|
|
467
|
+
| `assertQueues(names, options?)` | Create queue(s) with optional retry config (backward compatible) |
|
|
468
|
+
| `publishToExchange(config)` | Publish to exchange with routing key |
|
|
469
|
+
| `publishToQueue(config)` | Publish directly to queue |
|
|
470
|
+
| `publishBatch(configs)` | Publish multiple messages |
|
|
471
|
+
| `deleteQueues(names, options?)` | Delete queue(s) and related retry/DLQ queues |
|
|
472
|
+
| `close()` | Close publisher connection |
|
|
473
|
+
|
|
474
|
+
### Consumer Methods
|
|
475
|
+
|
|
476
|
+
| Method | Description |
|
|
477
|
+
|--------|-------------|
|
|
478
|
+
| `assertQueues(names, options?)` | Create queue(s) with optional retry/DLQ config |
|
|
479
|
+
| `bindQueue(queue, exchange, routingKey)` | Bind queue to exchange |
|
|
480
|
+
| `consumeQueue(config)` | Start consuming from queue |
|
|
481
|
+
| `consumeMultipleQueues(config)` | Consume from multiple queues |
|
|
482
|
+
| `consumeWithPattern(exchange, pattern, handler)` | Consume with pattern matching (topic) |
|
|
483
|
+
| `getConsumerStats()` | Get consumer statistics |
|
|
484
|
+
| `close()` | Close consumer connection |
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
338
488
|
## Additional Options
|
|
339
489
|
|
|
340
|
-
###
|
|
490
|
+
### Exchange Options (for assertExchange)
|
|
491
|
+
|
|
492
|
+
```typescript
|
|
493
|
+
{
|
|
494
|
+
exchangeType: 'direct', // 'direct' | 'topic' | 'fanout' | 'headers' (default: 'direct')
|
|
495
|
+
durable: true, // Exchange survives restart (default: true)
|
|
496
|
+
}
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
### Queue Options (for assertQueues)
|
|
341
500
|
|
|
342
501
|
```typescript
|
|
343
502
|
{
|
|
344
503
|
durable: true, // Queue survives restart (default: true)
|
|
345
504
|
exclusive: false, // Exclusive to connection (default: false)
|
|
346
505
|
autoDelete: false, // Auto-delete when unused (default: false)
|
|
506
|
+
retryConfig: {...}, // Optional: retry and DLQ configuration
|
|
347
507
|
}
|
|
348
508
|
```
|
|
349
509
|
|
|
510
|
+
### Bind Queue (consumer.bindQueue)
|
|
511
|
+
|
|
512
|
+
```typescript
|
|
513
|
+
await consumer.bindQueue(
|
|
514
|
+
'queue-name', // Queue to bind
|
|
515
|
+
'exchange-name', // Exchange to bind to
|
|
516
|
+
'routing.key' // Routing key or pattern (for topic exchanges)
|
|
517
|
+
);
|
|
518
|
+
|
|
519
|
+
// Pattern examples for topic exchanges:
|
|
520
|
+
// 'order.*' - matches order.created, order.updated
|
|
521
|
+
// 'order.#' - matches order.created, order.created.v2
|
|
522
|
+
// '*.created' - matches order.created, payment.created
|
|
523
|
+
```
|
|
524
|
+
|
|
350
525
|
### Publish Options
|
|
351
526
|
|
|
352
527
|
```typescript
|
|
@@ -419,8 +594,11 @@ await publisher.deleteQueues('orders', {
|
|
|
419
594
|
|
|
420
595
|
### Best Practices
|
|
421
596
|
- Call `initializeRabbitMQ(url)` once in your setup/helper file
|
|
422
|
-
-
|
|
423
|
-
- `
|
|
597
|
+
- **Use separation of concerns pattern:**
|
|
598
|
+
- Publisher → `assertExchange()` (owns exchanges)
|
|
599
|
+
- Consumer → `assertQueues()` + `bindQueue()` (owns queues and bindings)
|
|
600
|
+
- Set `retryConfig` in `assertQueues()` - auto-used when processing
|
|
601
|
+
- `assertExchange()`, `assertQueues()`, and `bindQueue()` are idempotent - safe to call multiple times
|
|
424
602
|
- Use exponential backoff with jitter to prevent thundering herd
|
|
425
603
|
- Always set up error event handlers before consuming
|
|
426
604
|
- Use graceful shutdown in production
|
package/dist/consumerMq.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { ConsumeConfig, MessageInfo, MultiQueueConsumeConfig, ConnectionOptions } from './types';
|
|
2
|
+
import { ConsumeConfig, MessageInfo, MultiQueueConsumeConfig, ConnectionOptions, RetryConfig } from './types';
|
|
3
3
|
declare class RabbitMQConsumer extends EventEmitter {
|
|
4
4
|
private connection?;
|
|
5
5
|
private channel?;
|
|
@@ -41,6 +41,69 @@ declare class RabbitMQConsumer extends EventEmitter {
|
|
|
41
41
|
* Check if consumer is connected
|
|
42
42
|
*/
|
|
43
43
|
isConsumerConnected(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Assert/create queues (Best Practice for Consumers)
|
|
46
|
+
* Consumers own their queues and decide what to subscribe to
|
|
47
|
+
*
|
|
48
|
+
* @param queueNames - Single queue name (string) or array of queue names
|
|
49
|
+
* @param options - Queue assertion options
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // Assert a single queue
|
|
53
|
+
* await consumer.assertQueues('orders-worker');
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Assert multiple queues
|
|
57
|
+
* await consumer.assertQueues(['orders-worker', 'payments-worker']);
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* // Assert queue with DLQ setup
|
|
61
|
+
* await consumer.assertQueues('orders-worker', {
|
|
62
|
+
* retryConfig: { maxRetries: 3, retryDelayMs: 5000 }
|
|
63
|
+
* });
|
|
64
|
+
*/
|
|
65
|
+
assertQueues(queueNames: string | string[], options?: {
|
|
66
|
+
durable?: boolean;
|
|
67
|
+
exclusive?: boolean;
|
|
68
|
+
autoDelete?: boolean;
|
|
69
|
+
retryConfig?: RetryConfig;
|
|
70
|
+
}): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Setup retry queue and DLQ for a main queue
|
|
73
|
+
*/
|
|
74
|
+
private setupRetryAndDLQQueues;
|
|
75
|
+
/**
|
|
76
|
+
* Bind a queue to an exchange with a routing key (Best Practice for Consumers)
|
|
77
|
+
* Consumers decide which exchanges/routing keys they want to subscribe to
|
|
78
|
+
*
|
|
79
|
+
* @param queueName - Name of the queue to bind
|
|
80
|
+
* @param exchangeName - Name of the exchange to bind to
|
|
81
|
+
* @param routingKey - Routing key or pattern (for topic exchanges)
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* // Bind queue to exchange with routing key
|
|
85
|
+
* await consumer.bindQueue('orders-worker', 'orders', 'order.created');
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* // Bind with pattern (topic exchange)
|
|
89
|
+
* await consumer.bindQueue('all-orders', 'events', 'order.*');
|
|
90
|
+
*/
|
|
91
|
+
bindQueue(queueName: string, exchangeName: string, routingKey: string): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* List of error codes that are considered retryable (transient errors)
|
|
94
|
+
* These errors indicate temporary failures that may succeed on retry
|
|
95
|
+
*/
|
|
96
|
+
private static readonly RETRYABLE_ERROR_CODES;
|
|
97
|
+
/**
|
|
98
|
+
* Extract error code from an error object
|
|
99
|
+
* Handles various error formats (Node.js errors, custom errors, HTTP errors)
|
|
100
|
+
*/
|
|
101
|
+
private extractErrorCode;
|
|
102
|
+
/**
|
|
103
|
+
* Determine if an error code represents a retryable (transient) error
|
|
104
|
+
* Retryable errors are temporary and may succeed if processed again later
|
|
105
|
+
*/
|
|
106
|
+
private isRetryableError;
|
|
44
107
|
/**
|
|
45
108
|
* Calculate retry delay based on backoff strategy
|
|
46
109
|
*/
|
package/dist/consumerMq.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumerMq.d.ts","sourceRoot":"","sources":["../consumerMq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAML,aAAa,EACb,WAAW,EACX,uBAAuB,EAIvB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"consumerMq.d.ts","sourceRoot":"","sources":["../consumerMq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAML,aAAa,EACb,WAAW,EACX,uBAAuB,EAIvB,iBAAiB,EACjB,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,cAAM,gBAAiB,SAAQ,YAAY;IACzC,OAAO,CAAC,UAAU,CAAC,CAA6B;IAChD,OAAO,CAAC,OAAO,CAAC,CAAsB;IAC/B,SAAS,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,qBAAqB,CAAC,CAAgB;IAE9C;;;;;;;;;;;;;;;OAeG;gBACS,OAAO,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAehD;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiFjC;;;;OAIG;YACW,gBAAgB;IAsB9B;;OAEG;IACH,mBAAmB,IAAI,OAAO;IAI9B;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,OAAO,GAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,WAAW,CAAC;KACtB,GACL,OAAO,CAAC,IAAI,CAAC;IAoDhB;;OAEG;YACW,sBAAsB;IA8BpC;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IAehB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CA4B3C;IAEF;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACG,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsOpE;;OAEG;IACG,qBAAqB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAevF;;OAEG;IACG,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAC9B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,EACvF,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GACrD,OAAO,CAAC,IAAI,CAAC;IA2DhB;;OAEG;IACH,gBAAgB,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;IAOjE;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA4B7B;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAC;;AAC5B,wBAAsC"}
|
package/dist/consumerMq.js
CHANGED
|
@@ -37,6 +37,7 @@ exports.RabbitMQConsumer = void 0;
|
|
|
37
37
|
const amqp = __importStar(require("amqp-connection-manager"));
|
|
38
38
|
const events_1 = require("events");
|
|
39
39
|
const types_1 = require("./types");
|
|
40
|
+
const validation_1 = require("./validation");
|
|
40
41
|
class RabbitMQConsumer extends events_1.EventEmitter {
|
|
41
42
|
/**
|
|
42
43
|
* Create a new RabbitMQ Consumer
|
|
@@ -176,6 +177,169 @@ class RabbitMQConsumer extends events_1.EventEmitter {
|
|
|
176
177
|
isConsumerConnected() {
|
|
177
178
|
return this.isConnected && !!this.connection && !!this.channel;
|
|
178
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Assert/create queues (Best Practice for Consumers)
|
|
182
|
+
* Consumers own their queues and decide what to subscribe to
|
|
183
|
+
*
|
|
184
|
+
* @param queueNames - Single queue name (string) or array of queue names
|
|
185
|
+
* @param options - Queue assertion options
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* // Assert a single queue
|
|
189
|
+
* await consumer.assertQueues('orders-worker');
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* // Assert multiple queues
|
|
193
|
+
* await consumer.assertQueues(['orders-worker', 'payments-worker']);
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* // Assert queue with DLQ setup
|
|
197
|
+
* await consumer.assertQueues('orders-worker', {
|
|
198
|
+
* retryConfig: { maxRetries: 3, retryDelayMs: 5000 }
|
|
199
|
+
* });
|
|
200
|
+
*/
|
|
201
|
+
async assertQueues(queueNames, options = {}) {
|
|
202
|
+
// Auto-connect on first use (lazy loading)
|
|
203
|
+
await this.ensureConnection();
|
|
204
|
+
// Normalize to array
|
|
205
|
+
const queues = Array.isArray(queueNames) ? queueNames : [queueNames];
|
|
206
|
+
const { durable = true, exclusive = false, autoDelete = false, retryConfig, } = options;
|
|
207
|
+
// Validate retry configuration if provided
|
|
208
|
+
if (retryConfig) {
|
|
209
|
+
(0, validation_1.validateRetryConfig)(retryConfig);
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
await this.channel.addSetup(async (ch) => {
|
|
213
|
+
for (const queueName of queues) {
|
|
214
|
+
const queueArgs = {};
|
|
215
|
+
// Setup DLQ arguments if retry config is provided
|
|
216
|
+
if (retryConfig && retryConfig.maxRetries > 0) {
|
|
217
|
+
// Messages that fail will be sent to retry queue
|
|
218
|
+
queueArgs['x-dead-letter-exchange'] = '';
|
|
219
|
+
queueArgs['x-dead-letter-routing-key'] = `${queueName}.retry`;
|
|
220
|
+
}
|
|
221
|
+
await ch.assertQueue(queueName, {
|
|
222
|
+
durable,
|
|
223
|
+
exclusive,
|
|
224
|
+
autoDelete,
|
|
225
|
+
arguments: Object.keys(queueArgs).length > 0 ? queueArgs : undefined,
|
|
226
|
+
});
|
|
227
|
+
console.log(`✓ Queue asserted: ${queueName}`);
|
|
228
|
+
// Setup retry and DLQ queues if retry config is provided
|
|
229
|
+
if (retryConfig) {
|
|
230
|
+
await this.setupRetryAndDLQQueues(ch, queueName, retryConfig);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
console.log(`✓ Successfully asserted ${queues.length} queue(s)`);
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
console.error('Failed to assert queues:', error);
|
|
238
|
+
throw error;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Setup retry queue and DLQ for a main queue
|
|
243
|
+
*/
|
|
244
|
+
async setupRetryAndDLQQueues(ch, queueName, retryConfig) {
|
|
245
|
+
const retryQueueName = `${queueName}.retry`;
|
|
246
|
+
const dlqName = `${queueName}.dlq`;
|
|
247
|
+
// Create retry queue (messages come back to main queue after TTL)
|
|
248
|
+
if (retryConfig.maxRetries > 0) {
|
|
249
|
+
await ch.assertQueue(retryQueueName, {
|
|
250
|
+
durable: true,
|
|
251
|
+
arguments: {
|
|
252
|
+
'x-dead-letter-exchange': '',
|
|
253
|
+
'x-dead-letter-routing-key': queueName,
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
console.log(`✓ Retry queue asserted: ${retryQueueName}`);
|
|
257
|
+
}
|
|
258
|
+
// Create DLQ (final resting place for failed messages)
|
|
259
|
+
await ch.assertQueue(dlqName, {
|
|
260
|
+
durable: true,
|
|
261
|
+
arguments: {
|
|
262
|
+
'x-queue-mode': 'lazy',
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
console.log(`✓ DLQ asserted: ${dlqName}`);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Bind a queue to an exchange with a routing key (Best Practice for Consumers)
|
|
269
|
+
* Consumers decide which exchanges/routing keys they want to subscribe to
|
|
270
|
+
*
|
|
271
|
+
* @param queueName - Name of the queue to bind
|
|
272
|
+
* @param exchangeName - Name of the exchange to bind to
|
|
273
|
+
* @param routingKey - Routing key or pattern (for topic exchanges)
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* // Bind queue to exchange with routing key
|
|
277
|
+
* await consumer.bindQueue('orders-worker', 'orders', 'order.created');
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* // Bind with pattern (topic exchange)
|
|
281
|
+
* await consumer.bindQueue('all-orders', 'events', 'order.*');
|
|
282
|
+
*/
|
|
283
|
+
async bindQueue(queueName, exchangeName, routingKey) {
|
|
284
|
+
// Auto-connect on first use (lazy loading)
|
|
285
|
+
await this.ensureConnection();
|
|
286
|
+
try {
|
|
287
|
+
await this.channel.addSetup(async (ch) => {
|
|
288
|
+
await ch.bindQueue(queueName, exchangeName, routingKey);
|
|
289
|
+
console.log(`✓ Queue bound: ${queueName} -> ${exchangeName} (${routingKey})`);
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
console.error('Failed to bind queue:', error);
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Extract error code from an error object
|
|
299
|
+
* Handles various error formats (Node.js errors, custom errors, HTTP errors)
|
|
300
|
+
*/
|
|
301
|
+
extractErrorCode(error) {
|
|
302
|
+
if (!error)
|
|
303
|
+
return 'UNKNOWN_ERROR';
|
|
304
|
+
// Handle Error objects
|
|
305
|
+
if (error instanceof Error) {
|
|
306
|
+
const err = error;
|
|
307
|
+
// Node.js system errors (ETIMEDOUT, ECONNRESET, etc.)
|
|
308
|
+
if (err.code)
|
|
309
|
+
return String(err.code);
|
|
310
|
+
// HTTP status codes
|
|
311
|
+
if (err.statusCode)
|
|
312
|
+
return `HTTP_${err.statusCode}`;
|
|
313
|
+
if (err.status)
|
|
314
|
+
return `HTTP_${err.status}`;
|
|
315
|
+
// Custom error codes
|
|
316
|
+
if (err.errorCode)
|
|
317
|
+
return String(err.errorCode);
|
|
318
|
+
// Extract from error name
|
|
319
|
+
if (err.name && err.name !== 'Error')
|
|
320
|
+
return err.name;
|
|
321
|
+
// Try to extract from message (e.g., "ETIMEDOUT: connection timed out")
|
|
322
|
+
const match = err.message?.match(/^([A-Z_]+):/);
|
|
323
|
+
if (match)
|
|
324
|
+
return match[1];
|
|
325
|
+
}
|
|
326
|
+
// Handle plain objects with code property
|
|
327
|
+
if (typeof error === 'object' && error !== null) {
|
|
328
|
+
const obj = error;
|
|
329
|
+
if (obj.code)
|
|
330
|
+
return String(obj.code);
|
|
331
|
+
if (obj.errorCode)
|
|
332
|
+
return String(obj.errorCode);
|
|
333
|
+
}
|
|
334
|
+
return 'UNKNOWN_ERROR';
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Determine if an error code represents a retryable (transient) error
|
|
338
|
+
* Retryable errors are temporary and may succeed if processed again later
|
|
339
|
+
*/
|
|
340
|
+
isRetryableError(errorCode) {
|
|
341
|
+
return RabbitMQConsumer.RETRYABLE_ERROR_CODES.includes(errorCode);
|
|
342
|
+
}
|
|
179
343
|
/**
|
|
180
344
|
* Calculate retry delay based on backoff strategy
|
|
181
345
|
*/
|
|
@@ -319,6 +483,8 @@ class RabbitMQConsumer extends events_1.EventEmitter {
|
|
|
319
483
|
console.log(`[${timestamp}] 💀 Max retries exceeded, moving to DLQ`);
|
|
320
484
|
// Manually send to DLQ (can't rely on nack because main queue's DLX routes to retry)
|
|
321
485
|
const dlqName = `${queueName}.dlq`;
|
|
486
|
+
// Extract error code for categorization
|
|
487
|
+
const errorCode = this.extractErrorCode(error);
|
|
322
488
|
try {
|
|
323
489
|
await ch.sendToQueue(dlqName, msg.content, {
|
|
324
490
|
...msg.properties,
|
|
@@ -326,6 +492,9 @@ class RabbitMQConsumer extends events_1.EventEmitter {
|
|
|
326
492
|
...headers,
|
|
327
493
|
'x-death-reason': 'max-retries-exceeded',
|
|
328
494
|
'x-death-timestamp': new Date().toISOString(),
|
|
495
|
+
'x-last-error': errorMessage,
|
|
496
|
+
'x-last-error-code': errorCode,
|
|
497
|
+
'x-is-retryable': this.isRetryableError(errorCode) ? 'true' : 'false',
|
|
329
498
|
}
|
|
330
499
|
});
|
|
331
500
|
// Acknowledge original message after successful DLQ send
|
|
@@ -472,5 +641,34 @@ class RabbitMQConsumer extends events_1.EventEmitter {
|
|
|
472
641
|
}
|
|
473
642
|
}
|
|
474
643
|
exports.RabbitMQConsumer = RabbitMQConsumer;
|
|
644
|
+
/**
|
|
645
|
+
* List of error codes that are considered retryable (transient errors)
|
|
646
|
+
* These errors indicate temporary failures that may succeed on retry
|
|
647
|
+
*/
|
|
648
|
+
RabbitMQConsumer.RETRYABLE_ERROR_CODES = [
|
|
649
|
+
// Network errors
|
|
650
|
+
'ETIMEDOUT',
|
|
651
|
+
'ECONNRESET',
|
|
652
|
+
'ECONNREFUSED',
|
|
653
|
+
'ENOTFOUND',
|
|
654
|
+
'ENETUNREACH',
|
|
655
|
+
'EHOSTUNREACH',
|
|
656
|
+
'EPIPE',
|
|
657
|
+
'EAI_AGAIN',
|
|
658
|
+
// Service availability errors
|
|
659
|
+
'SERVICE_UNAVAILABLE',
|
|
660
|
+
'GATEWAY_TIMEOUT',
|
|
661
|
+
'BAD_GATEWAY',
|
|
662
|
+
// Database errors
|
|
663
|
+
'DB_CONNECTION_FAILED',
|
|
664
|
+
'DB_TIMEOUT',
|
|
665
|
+
'POOL_EXHAUSTED',
|
|
666
|
+
// Rate limiting
|
|
667
|
+
'RATE_LIMITED',
|
|
668
|
+
'TOO_MANY_REQUESTS',
|
|
669
|
+
// Temporary failures
|
|
670
|
+
'TEMPORARY_FAILURE',
|
|
671
|
+
'RETRY_LATER',
|
|
672
|
+
];
|
|
475
673
|
exports.default = new RabbitMQConsumer();
|
|
476
674
|
//# sourceMappingURL=consumerMq.js.map
|
package/dist/consumerMq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumerMq.js","sourceRoot":"","sources":["../consumerMq.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"consumerMq.js","sourceRoot":"","sources":["../consumerMq.ts"],"names":[],"mappings":"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"}
|