@amqp-contract/contract 0.10.0 → 0.12.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/dist/index.cjs +344 -92
- package/dist/index.d.cts +658 -123
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +658 -123
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +342 -92
- package/dist/index.mjs.map +1 -1
- package/docs/index.md +562 -102
- package/package.json +4 -4
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/builder/exchange.ts","../src/builder/message.ts","../src/builder/queue.ts","../src/builder/binding.ts","../src/builder/publisher.ts","../src/builder/consumer.ts","../src/builder/contract.ts","../src/builder/routing-types.ts","../src/builder/publisher-first.ts","../src/builder/consumer-first.ts","../src/builder/ttl-backoff.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region src/builder.ts
|
|
1
|
+
//#region src/builder/exchange.ts
|
|
2
2
|
/**
|
|
3
3
|
* Define an AMQP exchange.
|
|
4
4
|
*
|
|
@@ -19,67 +19,9 @@ function defineExchange(name, type, options) {
|
|
|
19
19
|
...options
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* A queue stores messages until they are consumed by workers. Queues can be bound to exchanges
|
|
26
|
-
* to receive messages based on routing rules.
|
|
27
|
-
*
|
|
28
|
-
* @param name - The name of the queue
|
|
29
|
-
* @param options - Optional queue configuration
|
|
30
|
-
* @param options.durable - If true, the queue survives broker restarts (default: false)
|
|
31
|
-
* @param options.exclusive - If true, the queue can only be used by the declaring connection (default: false)
|
|
32
|
-
* @param options.autoDelete - If true, the queue is deleted when the last consumer unsubscribes (default: false)
|
|
33
|
-
* @param options.deadLetter - Dead letter configuration for handling failed messages
|
|
34
|
-
* @param options.maxPriority - Maximum priority level for priority queue (1-255, recommended: 1-10). Sets x-max-priority argument.
|
|
35
|
-
* @param options.arguments - Additional AMQP arguments (e.g., x-message-ttl)
|
|
36
|
-
* @returns A queue definition
|
|
37
|
-
*
|
|
38
|
-
* @example
|
|
39
|
-
* ```typescript
|
|
40
|
-
* // Basic queue
|
|
41
|
-
* const orderQueue = defineQueue('order-processing', {
|
|
42
|
-
* durable: true,
|
|
43
|
-
* });
|
|
44
|
-
*
|
|
45
|
-
* // Priority queue with max priority of 10
|
|
46
|
-
* const taskQueue = defineQueue('urgent-tasks', {
|
|
47
|
-
* durable: true,
|
|
48
|
-
* maxPriority: 10,
|
|
49
|
-
* });
|
|
50
|
-
*
|
|
51
|
-
* // Queue with dead letter exchange
|
|
52
|
-
* const dlx = defineExchange('orders-dlx', 'topic', { durable: true });
|
|
53
|
-
* const orderQueueWithDLX = defineQueue('order-processing', {
|
|
54
|
-
* durable: true,
|
|
55
|
-
* deadLetter: {
|
|
56
|
-
* exchange: dlx,
|
|
57
|
-
* routingKey: 'order.failed'
|
|
58
|
-
* },
|
|
59
|
-
* arguments: {
|
|
60
|
-
* 'x-message-ttl': 86400000, // 24 hours
|
|
61
|
-
* }
|
|
62
|
-
* });
|
|
63
|
-
* ```
|
|
64
|
-
*/
|
|
65
|
-
function defineQueue(name, options) {
|
|
66
|
-
const { maxPriority, ...queueOptions } = options ?? {};
|
|
67
|
-
if (maxPriority !== void 0) {
|
|
68
|
-
if (maxPriority < 1 || maxPriority > 255) throw new Error(`Invalid maxPriority: ${maxPriority}. Must be between 1 and 255. Recommended range: 1-10.`);
|
|
69
|
-
return {
|
|
70
|
-
name,
|
|
71
|
-
...queueOptions,
|
|
72
|
-
arguments: {
|
|
73
|
-
...queueOptions.arguments,
|
|
74
|
-
"x-max-priority": maxPriority
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
name,
|
|
80
|
-
...queueOptions
|
|
81
|
-
};
|
|
82
|
-
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/builder/message.ts
|
|
83
25
|
/**
|
|
84
26
|
* Define a message definition with payload and optional headers/metadata.
|
|
85
27
|
*
|
|
@@ -121,33 +63,63 @@ function defineMessage(payload, options) {
|
|
|
121
63
|
...options
|
|
122
64
|
};
|
|
123
65
|
}
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/builder/binding.ts
|
|
69
|
+
/**
|
|
70
|
+
* Type guard to check if a queue entry is a QueueWithTtlBackoffInfrastructure.
|
|
71
|
+
* Duplicated here to avoid circular dependency with queue.ts.
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
function isQueueWithTtlBackoffInfrastructure$1(entry) {
|
|
75
|
+
return typeof entry === "object" && entry !== null && "__brand" in entry && entry.__brand === "QueueWithTtlBackoffInfrastructure";
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Extract the plain QueueDefinition from a QueueEntry.
|
|
79
|
+
* Duplicated here to avoid circular dependency with queue.ts.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
function extractQueueInternal(entry) {
|
|
83
|
+
if (isQueueWithTtlBackoffInfrastructure$1(entry)) return entry.queue;
|
|
84
|
+
return entry;
|
|
85
|
+
}
|
|
124
86
|
/**
|
|
125
87
|
* Define a binding between a queue and an exchange.
|
|
126
88
|
*
|
|
127
89
|
* This is the implementation function - use the type-specific overloads for better type safety.
|
|
128
90
|
*
|
|
129
|
-
* @param queue - The queue definition to bind
|
|
91
|
+
* @param queue - The queue definition or queue with infrastructure to bind
|
|
130
92
|
* @param exchange - The exchange definition
|
|
131
93
|
* @param options - Optional binding configuration
|
|
132
94
|
* @returns A queue binding definition
|
|
133
95
|
* @internal
|
|
134
96
|
*/
|
|
135
97
|
function defineQueueBinding(queue, exchange, options) {
|
|
98
|
+
const queueDef = extractQueueInternal(queue);
|
|
136
99
|
if (exchange.type === "fanout") return {
|
|
137
100
|
type: "queue",
|
|
138
|
-
queue,
|
|
101
|
+
queue: queueDef,
|
|
139
102
|
exchange,
|
|
140
103
|
...options?.arguments && { arguments: options.arguments }
|
|
141
104
|
};
|
|
142
105
|
return {
|
|
143
106
|
type: "queue",
|
|
144
|
-
queue,
|
|
107
|
+
queue: queueDef,
|
|
145
108
|
exchange,
|
|
146
109
|
routingKey: options?.routingKey,
|
|
147
110
|
...options?.arguments && { arguments: options.arguments }
|
|
148
111
|
};
|
|
149
112
|
}
|
|
150
113
|
/**
|
|
114
|
+
* Internal helper to call defineQueueBinding with proper type handling.
|
|
115
|
+
* Used by queue.ts to avoid circular dependency.
|
|
116
|
+
* @internal
|
|
117
|
+
*/
|
|
118
|
+
function defineQueueBindingInternal(queue, exchange, options) {
|
|
119
|
+
if (exchange.type === "fanout") return defineQueueBinding(queue, exchange, options);
|
|
120
|
+
return defineQueueBinding(queue, exchange, options);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
151
123
|
* Define a binding between two exchanges (exchange-to-exchange routing).
|
|
152
124
|
*
|
|
153
125
|
* This is the implementation function - use the type-specific overloads for better type safety.
|
|
@@ -173,6 +145,185 @@ function defineExchangeBinding(destination, source, options) {
|
|
|
173
145
|
...options?.arguments && { arguments: options.arguments }
|
|
174
146
|
};
|
|
175
147
|
}
|
|
148
|
+
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/builder/queue.ts
|
|
151
|
+
/**
|
|
152
|
+
* Resolve TTL-backoff retry options with defaults applied.
|
|
153
|
+
* @internal
|
|
154
|
+
*/
|
|
155
|
+
function resolveTtlBackoffOptions(options) {
|
|
156
|
+
return {
|
|
157
|
+
mode: "ttl-backoff",
|
|
158
|
+
maxRetries: options?.maxRetries ?? 3,
|
|
159
|
+
initialDelayMs: options?.initialDelayMs ?? 1e3,
|
|
160
|
+
maxDelayMs: options?.maxDelayMs ?? 3e4,
|
|
161
|
+
backoffMultiplier: options?.backoffMultiplier ?? 2,
|
|
162
|
+
jitter: options?.jitter ?? true
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Type guard to check if a queue entry is a QueueWithTtlBackoffInfrastructure.
|
|
167
|
+
* @internal
|
|
168
|
+
*/
|
|
169
|
+
function isQueueWithTtlBackoffInfrastructure(entry) {
|
|
170
|
+
return typeof entry === "object" && entry !== null && "__brand" in entry && entry.__brand === "QueueWithTtlBackoffInfrastructure";
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Extract the plain QueueDefinition from a QueueEntry.
|
|
174
|
+
* If the entry is a QueueWithTtlBackoffInfrastructure, returns the inner queue.
|
|
175
|
+
* Otherwise, returns the entry as-is.
|
|
176
|
+
*
|
|
177
|
+
* @param entry - The queue entry (either plain QueueDefinition or QueueWithTtlBackoffInfrastructure)
|
|
178
|
+
* @returns The plain QueueDefinition
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* const queue = defineQueue('orders', { retry: { mode: 'ttl-backoff' }, deadLetter: { exchange: dlx } });
|
|
183
|
+
* const plainQueue = extractQueue(queue); // Returns the inner QueueDefinition
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
function extractQueue(entry) {
|
|
187
|
+
if (isQueueWithTtlBackoffInfrastructure(entry)) return entry.queue;
|
|
188
|
+
return entry;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Wrap a queue definition with TTL-backoff retry infrastructure.
|
|
192
|
+
* @internal
|
|
193
|
+
*/
|
|
194
|
+
function wrapWithTtlBackoffInfrastructure(queue) {
|
|
195
|
+
if (!queue.deadLetter) throw new Error(`Queue "${queue.name}" does not have a dead letter exchange configured. TTL-backoff retry requires deadLetter to be set on the queue.`);
|
|
196
|
+
const dlx = queue.deadLetter.exchange;
|
|
197
|
+
const waitQueueName = `${queue.name}-wait`;
|
|
198
|
+
const waitQueue = {
|
|
199
|
+
name: waitQueueName,
|
|
200
|
+
type: "quorum",
|
|
201
|
+
durable: queue.durable ?? true,
|
|
202
|
+
deadLetter: {
|
|
203
|
+
exchange: dlx,
|
|
204
|
+
routingKey: queue.name
|
|
205
|
+
},
|
|
206
|
+
retry: resolveTtlBackoffOptions(void 0)
|
|
207
|
+
};
|
|
208
|
+
return {
|
|
209
|
+
__brand: "QueueWithTtlBackoffInfrastructure",
|
|
210
|
+
queue,
|
|
211
|
+
waitQueue,
|
|
212
|
+
waitQueueBinding: defineQueueBindingInternal(waitQueue, dlx, { routingKey: waitQueueName }),
|
|
213
|
+
mainQueueRetryBinding: defineQueueBindingInternal(queue, dlx, { routingKey: queue.name })
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Define an AMQP queue.
|
|
218
|
+
*
|
|
219
|
+
* A queue stores messages until they are consumed by workers. Queues can be bound to exchanges
|
|
220
|
+
* to receive messages based on routing rules.
|
|
221
|
+
*
|
|
222
|
+
* By default, queues are created as quorum queues which provide better durability and
|
|
223
|
+
* high-availability. Use `type: 'classic'` for special cases like non-durable queues
|
|
224
|
+
* or priority queues.
|
|
225
|
+
*
|
|
226
|
+
* @param name - The name of the queue
|
|
227
|
+
* @param options - Optional queue configuration
|
|
228
|
+
* @param options.type - Queue type: 'quorum' (default, recommended) or 'classic'
|
|
229
|
+
* @param options.durable - If true, the queue survives broker restarts. Quorum queues are always durable.
|
|
230
|
+
* @param options.exclusive - If true, the queue can only be used by the declaring connection. Only supported with classic queues.
|
|
231
|
+
* @param options.autoDelete - If true, the queue is deleted when the last consumer unsubscribes (default: false)
|
|
232
|
+
* @param options.deadLetter - Dead letter configuration for handling failed messages
|
|
233
|
+
* @param options.maxPriority - Maximum priority level for priority queue (1-255, recommended: 1-10). Only supported with classic queues.
|
|
234
|
+
* @param options.arguments - Additional AMQP arguments (e.g., x-message-ttl)
|
|
235
|
+
* @returns A queue definition
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```typescript
|
|
239
|
+
* // Quorum queue (default, recommended for production)
|
|
240
|
+
* const orderQueue = defineQueue('order-processing');
|
|
241
|
+
*
|
|
242
|
+
* // Explicit quorum queue with dead letter exchange
|
|
243
|
+
* const dlx = defineExchange('orders-dlx', 'topic', { durable: true });
|
|
244
|
+
* const orderQueueWithDLX = defineQueue('order-processing', {
|
|
245
|
+
* type: 'quorum',
|
|
246
|
+
* deadLetter: {
|
|
247
|
+
* exchange: dlx,
|
|
248
|
+
* routingKey: 'order.failed'
|
|
249
|
+
* },
|
|
250
|
+
* arguments: {
|
|
251
|
+
* 'x-message-ttl': 86400000, // 24 hours
|
|
252
|
+
* }
|
|
253
|
+
* });
|
|
254
|
+
*
|
|
255
|
+
* // Classic queue (for special cases)
|
|
256
|
+
* const tempQueue = defineQueue('temp-queue', {
|
|
257
|
+
* type: 'classic',
|
|
258
|
+
* durable: false,
|
|
259
|
+
* autoDelete: true,
|
|
260
|
+
* });
|
|
261
|
+
*
|
|
262
|
+
* // Priority queue (requires classic type)
|
|
263
|
+
* const taskQueue = defineQueue('urgent-tasks', {
|
|
264
|
+
* type: 'classic',
|
|
265
|
+
* durable: true,
|
|
266
|
+
* maxPriority: 10,
|
|
267
|
+
* });
|
|
268
|
+
*
|
|
269
|
+
* // Queue with TTL-backoff retry (returns infrastructure automatically)
|
|
270
|
+
* const dlx = defineExchange('orders-dlx', 'direct', { durable: true });
|
|
271
|
+
* const orderQueue = defineQueue('order-processing', {
|
|
272
|
+
* deadLetter: { exchange: dlx },
|
|
273
|
+
* retry: { mode: 'ttl-backoff', maxRetries: 5 },
|
|
274
|
+
* });
|
|
275
|
+
* // orderQueue is QueueWithTtlBackoffInfrastructure, pass directly to defineContract
|
|
276
|
+
* ```
|
|
277
|
+
*/
|
|
278
|
+
function defineQueue(name, options) {
|
|
279
|
+
const opts = options ?? {};
|
|
280
|
+
const type = opts.type ?? "quorum";
|
|
281
|
+
const baseProps = { name };
|
|
282
|
+
if (opts.durable !== void 0) baseProps.durable = opts.durable;
|
|
283
|
+
if (opts.autoDelete !== void 0) baseProps.autoDelete = opts.autoDelete;
|
|
284
|
+
if (opts.deadLetter !== void 0) baseProps.deadLetter = opts.deadLetter;
|
|
285
|
+
if (opts.arguments !== void 0) baseProps.arguments = opts.arguments;
|
|
286
|
+
if (type === "quorum") {
|
|
287
|
+
const quorumOpts = opts;
|
|
288
|
+
const inputRetry = quorumOpts.retry ?? { mode: "ttl-backoff" };
|
|
289
|
+
if (inputRetry.mode === "quorum-native") {
|
|
290
|
+
if (quorumOpts.deliveryLimit === void 0) throw new Error(`Queue "${name}" uses quorum-native retry mode but deliveryLimit is not configured. Quorum-native retry requires deliveryLimit to be set.`);
|
|
291
|
+
}
|
|
292
|
+
const retry$1 = inputRetry.mode === "quorum-native" ? inputRetry : resolveTtlBackoffOptions(inputRetry);
|
|
293
|
+
const queueDefinition$1 = {
|
|
294
|
+
...baseProps,
|
|
295
|
+
type: "quorum",
|
|
296
|
+
retry: retry$1
|
|
297
|
+
};
|
|
298
|
+
if (quorumOpts.deliveryLimit !== void 0) {
|
|
299
|
+
if (quorumOpts.deliveryLimit < 1 || !Number.isInteger(quorumOpts.deliveryLimit)) throw new Error(`Invalid deliveryLimit: ${quorumOpts.deliveryLimit}. Must be a positive integer.`);
|
|
300
|
+
queueDefinition$1.deliveryLimit = quorumOpts.deliveryLimit;
|
|
301
|
+
}
|
|
302
|
+
if (retry$1.mode === "ttl-backoff" && queueDefinition$1.deadLetter) return wrapWithTtlBackoffInfrastructure(queueDefinition$1);
|
|
303
|
+
return queueDefinition$1;
|
|
304
|
+
}
|
|
305
|
+
const classicOpts = opts;
|
|
306
|
+
if (classicOpts.retry?.mode === "quorum-native") throw new Error(`Queue "${name}" uses quorum-native retry mode but is a classic queue. Quorum-native retry requires quorum queues (type: "quorum").`);
|
|
307
|
+
const retry = resolveTtlBackoffOptions(classicOpts.retry);
|
|
308
|
+
const queueDefinition = {
|
|
309
|
+
...baseProps,
|
|
310
|
+
type: "classic",
|
|
311
|
+
retry
|
|
312
|
+
};
|
|
313
|
+
if (classicOpts.exclusive !== void 0) queueDefinition.exclusive = classicOpts.exclusive;
|
|
314
|
+
if (classicOpts.maxPriority !== void 0) {
|
|
315
|
+
if (classicOpts.maxPriority < 1 || classicOpts.maxPriority > 255) throw new Error(`Invalid maxPriority: ${classicOpts.maxPriority}. Must be between 1 and 255. Recommended range: 1-10.`);
|
|
316
|
+
queueDefinition.arguments = {
|
|
317
|
+
...queueDefinition.arguments,
|
|
318
|
+
"x-max-priority": classicOpts.maxPriority
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
if (retry.mode === "ttl-backoff" && queueDefinition.deadLetter) return wrapWithTtlBackoffInfrastructure(queueDefinition);
|
|
322
|
+
return queueDefinition;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
//#endregion
|
|
326
|
+
//#region src/builder/publisher.ts
|
|
176
327
|
/**
|
|
177
328
|
* Define a message publisher.
|
|
178
329
|
*
|
|
@@ -196,6 +347,18 @@ function definePublisher(exchange, message, options) {
|
|
|
196
347
|
};
|
|
197
348
|
}
|
|
198
349
|
/**
|
|
350
|
+
* Helper to call definePublisher with proper type handling.
|
|
351
|
+
* Type safety is enforced by overloaded public function signatures.
|
|
352
|
+
* @internal
|
|
353
|
+
*/
|
|
354
|
+
function definePublisherInternal(exchange, message, options) {
|
|
355
|
+
if (exchange.type === "fanout") return definePublisher(exchange, message, options);
|
|
356
|
+
return definePublisher(exchange, message, options);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
//#endregion
|
|
360
|
+
//#region src/builder/consumer.ts
|
|
361
|
+
/**
|
|
199
362
|
* Define a message consumer.
|
|
200
363
|
*
|
|
201
364
|
* A consumer receives and processes messages from a queue. The message schema is validated
|
|
@@ -239,11 +402,14 @@ function definePublisher(exchange, message, options) {
|
|
|
239
402
|
*/
|
|
240
403
|
function defineConsumer(queue, message, options) {
|
|
241
404
|
return {
|
|
242
|
-
queue,
|
|
405
|
+
queue: extractQueue(queue),
|
|
243
406
|
message,
|
|
244
407
|
...options
|
|
245
408
|
};
|
|
246
409
|
}
|
|
410
|
+
|
|
411
|
+
//#endregion
|
|
412
|
+
//#region src/builder/contract.ts
|
|
247
413
|
/**
|
|
248
414
|
* Define an AMQP contract.
|
|
249
415
|
*
|
|
@@ -314,35 +480,44 @@ function defineConsumer(queue, message, options) {
|
|
|
314
480
|
* ```
|
|
315
481
|
*/
|
|
316
482
|
function defineContract(definition) {
|
|
317
|
-
return definition;
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
483
|
+
if (!definition.queues || Object.keys(definition.queues).length === 0) return definition;
|
|
484
|
+
const queues = definition.queues;
|
|
485
|
+
const expandedQueues = {};
|
|
486
|
+
const autoBindings = {};
|
|
487
|
+
for (const [name, entry] of Object.entries(queues)) if (isQueueWithTtlBackoffInfrastructure(entry)) {
|
|
488
|
+
expandedQueues[name] = entry.queue;
|
|
489
|
+
expandedQueues[`${name}Wait`] = entry.waitQueue;
|
|
490
|
+
autoBindings[`${name}WaitBinding`] = entry.waitQueueBinding;
|
|
491
|
+
autoBindings[`${name}RetryBinding`] = entry.mainQueueRetryBinding;
|
|
492
|
+
} else expandedQueues[name] = entry;
|
|
493
|
+
if (Object.keys(autoBindings).length > 0) {
|
|
494
|
+
const mergedBindings = {
|
|
495
|
+
...definition.bindings,
|
|
496
|
+
...autoBindings
|
|
497
|
+
};
|
|
498
|
+
return {
|
|
499
|
+
...definition,
|
|
500
|
+
queues: expandedQueues,
|
|
501
|
+
bindings: mergedBindings
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
return {
|
|
505
|
+
...definition,
|
|
506
|
+
queues: expandedQueues
|
|
507
|
+
};
|
|
336
508
|
}
|
|
509
|
+
|
|
510
|
+
//#endregion
|
|
511
|
+
//#region src/builder/publisher-first.ts
|
|
337
512
|
/**
|
|
338
513
|
* Implementation of definePublisherFirst.
|
|
339
514
|
* @internal
|
|
340
515
|
*/
|
|
341
516
|
function definePublisherFirst(exchange, message, options) {
|
|
342
|
-
const publisher =
|
|
517
|
+
const publisher = definePublisherInternal(exchange, message, options);
|
|
343
518
|
if (exchange.type === "topic") {
|
|
344
519
|
const createConsumer$1 = (queue, routingKey) => {
|
|
345
|
-
const binding =
|
|
520
|
+
const binding = defineQueueBindingInternal(queue, exchange, routingKey ? {
|
|
346
521
|
...options,
|
|
347
522
|
routingKey
|
|
348
523
|
} : options);
|
|
@@ -357,7 +532,7 @@ function definePublisherFirst(exchange, message, options) {
|
|
|
357
532
|
};
|
|
358
533
|
}
|
|
359
534
|
const createConsumer = (queue) => {
|
|
360
|
-
const binding =
|
|
535
|
+
const binding = defineQueueBindingInternal(queue, exchange, options);
|
|
361
536
|
return {
|
|
362
537
|
consumer: defineConsumer(queue, message),
|
|
363
538
|
binding
|
|
@@ -368,16 +543,19 @@ function definePublisherFirst(exchange, message, options) {
|
|
|
368
543
|
createConsumer
|
|
369
544
|
};
|
|
370
545
|
}
|
|
546
|
+
|
|
547
|
+
//#endregion
|
|
548
|
+
//#region src/builder/consumer-first.ts
|
|
371
549
|
/**
|
|
372
550
|
* Implementation of defineConsumerFirst.
|
|
373
551
|
* @internal
|
|
374
552
|
*/
|
|
375
553
|
function defineConsumerFirst(queue, exchange, message, options) {
|
|
376
554
|
const consumer = defineConsumer(queue, message);
|
|
377
|
-
const binding =
|
|
555
|
+
const binding = defineQueueBindingInternal(queue, exchange, options);
|
|
378
556
|
if (exchange.type === "topic") {
|
|
379
557
|
const createPublisher$1 = (routingKey) => {
|
|
380
|
-
return
|
|
558
|
+
return definePublisherInternal(exchange, message, {
|
|
381
559
|
...options,
|
|
382
560
|
routingKey
|
|
383
561
|
});
|
|
@@ -389,7 +567,7 @@ function defineConsumerFirst(queue, exchange, message, options) {
|
|
|
389
567
|
};
|
|
390
568
|
}
|
|
391
569
|
const createPublisher = () => {
|
|
392
|
-
return
|
|
570
|
+
return definePublisherInternal(exchange, message, options);
|
|
393
571
|
};
|
|
394
572
|
return {
|
|
395
573
|
consumer,
|
|
@@ -399,5 +577,77 @@ function defineConsumerFirst(queue, exchange, message, options) {
|
|
|
399
577
|
}
|
|
400
578
|
|
|
401
579
|
//#endregion
|
|
402
|
-
|
|
580
|
+
//#region src/builder/ttl-backoff.ts
|
|
581
|
+
/**
|
|
582
|
+
* Create TTL-backoff retry infrastructure for a queue.
|
|
583
|
+
*
|
|
584
|
+
* This builder helper generates the wait queue and bindings needed for TTL-backoff retry.
|
|
585
|
+
* The generated infrastructure can be spread into a contract definition.
|
|
586
|
+
*
|
|
587
|
+
* TTL-backoff retry works by:
|
|
588
|
+
* 1. Failed messages are sent to the DLX with routing key `{queueName}-wait`
|
|
589
|
+
* 2. The wait queue receives these messages and holds them for a TTL period
|
|
590
|
+
* 3. After TTL expires, messages are dead-lettered back to the DLX with routing key `{queueName}`
|
|
591
|
+
* 4. The main queue receives the retried message via its binding to the DLX
|
|
592
|
+
*
|
|
593
|
+
* @param queue - The main queue definition (must have deadLetter configured)
|
|
594
|
+
* @param options - Optional configuration for the wait queue
|
|
595
|
+
* @param options.waitQueueDurable - Whether the wait queue should be durable (default: same as main queue)
|
|
596
|
+
* @returns TTL-backoff retry infrastructure containing wait queue and bindings
|
|
597
|
+
* @throws {Error} If the queue does not have a dead letter exchange configured
|
|
598
|
+
*
|
|
599
|
+
* @example
|
|
600
|
+
* ```typescript
|
|
601
|
+
* const dlx = defineExchange('orders-dlx', 'direct', { durable: true });
|
|
602
|
+
* const orderQueue = defineQueue('order-processing', {
|
|
603
|
+
* type: 'quorum',
|
|
604
|
+
* deadLetter: { exchange: dlx },
|
|
605
|
+
* retry: {
|
|
606
|
+
* mode: 'ttl-backoff',
|
|
607
|
+
* maxRetries: 5,
|
|
608
|
+
* initialDelayMs: 1000,
|
|
609
|
+
* },
|
|
610
|
+
* });
|
|
611
|
+
*
|
|
612
|
+
* // Generate TTL-backoff infrastructure
|
|
613
|
+
* const retryInfra = defineTtlBackoffRetryInfrastructure(orderQueue);
|
|
614
|
+
*
|
|
615
|
+
* // Spread into contract
|
|
616
|
+
* const contract = defineContract({
|
|
617
|
+
* exchanges: { dlx },
|
|
618
|
+
* queues: {
|
|
619
|
+
* orderProcessing: orderQueue,
|
|
620
|
+
* orderProcessingWait: retryInfra.waitQueue,
|
|
621
|
+
* },
|
|
622
|
+
* bindings: {
|
|
623
|
+
* ...// your other bindings
|
|
624
|
+
* orderWaitBinding: retryInfra.waitQueueBinding,
|
|
625
|
+
* orderRetryBinding: retryInfra.mainQueueRetryBinding,
|
|
626
|
+
* },
|
|
627
|
+
* // ... publishers and consumers
|
|
628
|
+
* });
|
|
629
|
+
* ```
|
|
630
|
+
*/
|
|
631
|
+
function defineTtlBackoffRetryInfrastructure(queueEntry, options) {
|
|
632
|
+
const queue = extractQueue(queueEntry);
|
|
633
|
+
if (!queue.deadLetter) throw new Error(`Queue "${queue.name}" does not have a dead letter exchange configured. TTL-backoff retry requires deadLetter to be set on the queue.`);
|
|
634
|
+
const dlx = queue.deadLetter.exchange;
|
|
635
|
+
const waitQueueName = `${queue.name}-wait`;
|
|
636
|
+
const waitQueue = defineQueue(waitQueueName, {
|
|
637
|
+
type: "quorum",
|
|
638
|
+
durable: options?.waitQueueDurable ?? queue.durable ?? true,
|
|
639
|
+
deadLetter: {
|
|
640
|
+
exchange: dlx,
|
|
641
|
+
routingKey: queue.name
|
|
642
|
+
}
|
|
643
|
+
});
|
|
644
|
+
return {
|
|
645
|
+
waitQueue,
|
|
646
|
+
waitQueueBinding: defineQueueBindingInternal(waitQueue, dlx, { routingKey: waitQueueName }),
|
|
647
|
+
mainQueueRetryBinding: defineQueueBindingInternal(queue, dlx, { routingKey: queue.name })
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
//#endregion
|
|
652
|
+
export { defineConsumer, defineConsumerFirst, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, definePublisherFirst, defineQueue, defineQueueBinding, defineTtlBackoffRetryInfrastructure, extractQueue };
|
|
403
653
|
//# sourceMappingURL=index.mjs.map
|