@amqp-contract/worker 0.19.0 → 0.21.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 +6 -7
- package/dist/index.cjs +161 -134
- package/dist/index.d.cts +62 -53
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +60 -51
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +155 -127
- package/dist/index.mjs.map +1 -1
- package/docs/index.md +75 -64
- package/package.json +29 -29
package/dist/index.d.cts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ConsumerDefinition, ConsumerEntry, ContractDefinition, InferConsumerNames, MessageDefinition } from "@amqp-contract/contract";
|
|
2
|
+
import { ConsumerOptions as ConsumerOptions$1, Logger, MessageValidationError, TechnicalError, TelemetryProvider } from "@amqp-contract/core";
|
|
3
|
+
import { Future, Result } from "@swan-io/boxed";
|
|
2
4
|
import * as amqp from "amqplib";
|
|
3
5
|
import { ConsumeMessage } from "amqplib";
|
|
4
6
|
import { TcpSocketConnectOpts } from "net";
|
|
5
7
|
import { ConnectionOptions } from "tls";
|
|
6
|
-
import { ConsumerDefinition, ConsumerEntry, ContractDefinition, InferConsumerNames, MessageDefinition } from "@amqp-contract/contract";
|
|
7
|
-
import { Future, Result } from "@swan-io/boxed";
|
|
8
8
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
9
9
|
|
|
10
|
-
//#region ../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.
|
|
10
|
+
//#region ../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@1.0.3/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts
|
|
11
11
|
type ConnectionUrl = string | amqp.Options.Connect | {
|
|
12
12
|
url: string;
|
|
13
13
|
connectionOptions?: AmqpConnectionOptions;
|
|
@@ -196,9 +196,9 @@ declare function nonRetryable(message: string, cause?: unknown): NonRetryableErr
|
|
|
196
196
|
//#endregion
|
|
197
197
|
//#region src/types.d.ts
|
|
198
198
|
/**
|
|
199
|
-
* Infer the
|
|
199
|
+
* Infer the output type from a schema (used by consumers after validation)
|
|
200
200
|
*/
|
|
201
|
-
type
|
|
201
|
+
type InferSchemaOutput<TSchema extends StandardSchemaV1> = TSchema extends StandardSchemaV1<infer _TInput, infer TOutput> ? TOutput : never;
|
|
202
202
|
/**
|
|
203
203
|
* Extract the ConsumerDefinition from any consumer entry type.
|
|
204
204
|
* Handles ConsumerDefinition, EventConsumerResult, and CommandConsumerConfig.
|
|
@@ -207,15 +207,15 @@ type ExtractConsumerDefinition<T extends ConsumerEntry> = T extends ConsumerDefi
|
|
|
207
207
|
consumer: ConsumerDefinition;
|
|
208
208
|
} ? T["consumer"] : never;
|
|
209
209
|
/**
|
|
210
|
-
* Infer consumer message payload
|
|
210
|
+
* Infer consumer message payload output type.
|
|
211
211
|
* Works with any consumer entry type by first extracting the ConsumerDefinition.
|
|
212
212
|
*/
|
|
213
|
-
type
|
|
213
|
+
type ConsumerInferPayloadOutput<TConsumer extends ConsumerEntry> = ExtractConsumerDefinition<TConsumer> extends ConsumerDefinition ? InferSchemaOutput<ExtractConsumerDefinition<TConsumer>["message"]["payload"]> : never;
|
|
214
214
|
/**
|
|
215
|
-
* Infer consumer message headers
|
|
216
|
-
* Returns undefined if no headers schema is defined
|
|
215
|
+
* Infer consumer message headers output type
|
|
216
|
+
* Returns undefined if no headers schema is defined.
|
|
217
217
|
*/
|
|
218
|
-
type
|
|
218
|
+
type ConsumerInferHeadersOutput<TConsumer extends ConsumerEntry> = ExtractConsumerDefinition<TConsumer> extends ConsumerDefinition ? ExtractConsumerDefinition<TConsumer>["message"] extends MessageDefinition<infer _TPayload, infer THeaders> ? THeaders extends StandardSchemaV1<Record<string, unknown>> ? InferSchemaOutput<THeaders> : undefined : undefined : undefined;
|
|
219
219
|
/**
|
|
220
220
|
* Infer all consumers from contract
|
|
221
221
|
*/
|
|
@@ -227,12 +227,12 @@ type InferConsumer<TContract extends ContractDefinition, TName extends InferCons
|
|
|
227
227
|
/**
|
|
228
228
|
* Infer the payload type for a specific consumer
|
|
229
229
|
*/
|
|
230
|
-
type WorkerInferConsumerPayload<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> =
|
|
230
|
+
type WorkerInferConsumerPayload<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = ConsumerInferPayloadOutput<InferConsumer<TContract, TName>>;
|
|
231
231
|
/**
|
|
232
232
|
* Infer the headers type for a specific consumer
|
|
233
233
|
* Returns undefined if no headers schema is defined
|
|
234
234
|
*/
|
|
235
|
-
type WorkerInferConsumerHeaders<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> =
|
|
235
|
+
type WorkerInferConsumerHeaders<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = ConsumerInferHeadersOutput<InferConsumer<TContract, TName>>;
|
|
236
236
|
/**
|
|
237
237
|
* A consumed message containing parsed payload and headers.
|
|
238
238
|
*
|
|
@@ -297,9 +297,7 @@ type WorkerInferConsumerHandler<TContract extends ContractDefinition, TName exte
|
|
|
297
297
|
* Note: Retry configuration is now defined at the queue level in the contract,
|
|
298
298
|
* not at the handler level. See `QueueDefinition.retry` for configuration options.
|
|
299
299
|
*/
|
|
300
|
-
type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandler<TContract, TName> | readonly [WorkerInferConsumerHandler<TContract, TName>,
|
|
301
|
-
prefetch?: number;
|
|
302
|
-
}];
|
|
300
|
+
type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandler<TContract, TName> | readonly [WorkerInferConsumerHandler<TContract, TName>, ConsumerOptions];
|
|
303
301
|
/**
|
|
304
302
|
* Consumer handlers for a contract.
|
|
305
303
|
* All handlers return `Future<Result<void, HandlerError>>` for explicit error control.
|
|
@@ -317,6 +315,7 @@ type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinition, TName
|
|
|
317
315
|
type WorkerInferConsumerHandlers<TContract extends ContractDefinition> = { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> };
|
|
318
316
|
//#endregion
|
|
319
317
|
//#region src/worker.d.ts
|
|
318
|
+
type ConsumerOptions = ConsumerOptions$1;
|
|
320
319
|
/**
|
|
321
320
|
* Options for creating a type-safe AMQP worker.
|
|
322
321
|
*
|
|
@@ -342,6 +341,9 @@ type WorkerInferConsumerHandlers<TContract extends ContractDefinition> = { [K in
|
|
|
342
341
|
* ]
|
|
343
342
|
* },
|
|
344
343
|
* urls: ['amqp://localhost'],
|
|
344
|
+
* defaultConsumerOptions: {
|
|
345
|
+
* prefetch: 5,
|
|
346
|
+
* },
|
|
345
347
|
* connectionOptions: {
|
|
346
348
|
* heartbeatIntervalInSeconds: 30
|
|
347
349
|
* },
|
|
@@ -369,6 +371,11 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
|
|
|
369
371
|
* OpenTelemetry instrumentation is automatically enabled if @opentelemetry/api is installed.
|
|
370
372
|
*/
|
|
371
373
|
telemetry?: TelemetryProvider | undefined;
|
|
374
|
+
/**
|
|
375
|
+
* Optional default consumer options applied to all consumer handlers.
|
|
376
|
+
* Handler-specific options provided in tuple form override these defaults.
|
|
377
|
+
*/
|
|
378
|
+
defaultConsumerOptions?: ConsumerOptions | undefined;
|
|
372
379
|
};
|
|
373
380
|
/**
|
|
374
381
|
* Type-safe AMQP worker for consuming messages from RabbitMQ.
|
|
@@ -384,7 +391,7 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
|
|
|
384
391
|
* import { defineQueue, defineMessage, defineContract, defineConsumer } from '@amqp-contract/contract';
|
|
385
392
|
* import { z } from 'zod';
|
|
386
393
|
*
|
|
387
|
-
* const orderQueue = defineQueue('order-processing'
|
|
394
|
+
* const orderQueue = defineQueue('order-processing');
|
|
388
395
|
* const orderMessage = defineMessage(z.object({
|
|
389
396
|
* orderId: z.string(),
|
|
390
397
|
* amount: z.number()
|
|
@@ -414,6 +421,7 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
|
|
|
414
421
|
declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
415
422
|
private readonly contract;
|
|
416
423
|
private readonly amqpClient;
|
|
424
|
+
private readonly defaultConsumerOptions;
|
|
417
425
|
private readonly logger?;
|
|
418
426
|
/**
|
|
419
427
|
* Internal handler storage - handlers returning `Future<Result>`.
|
|
@@ -453,6 +461,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
453
461
|
handlers,
|
|
454
462
|
urls,
|
|
455
463
|
connectionOptions,
|
|
464
|
+
defaultConsumerOptions,
|
|
456
465
|
logger,
|
|
457
466
|
telemetry
|
|
458
467
|
}: CreateWorkerOptions<TContract>): Future<Result<TypedAmqpWorker<TContract>, TechnicalError>>;
|
|
@@ -507,31 +516,55 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
507
516
|
*
|
|
508
517
|
* Flow depends on retry mode:
|
|
509
518
|
*
|
|
510
|
-
* **
|
|
519
|
+
* **immediate-requeue mode:**
|
|
511
520
|
* 1. If NonRetryableError -> send directly to DLQ (no retry)
|
|
512
|
-
* 2.
|
|
521
|
+
* 2. If max retries exceeded -> send to DLQ
|
|
522
|
+
* 3. Otherwise -> requeue immediately for retry
|
|
513
523
|
*
|
|
514
524
|
* **ttl-backoff mode:**
|
|
515
525
|
* 1. If NonRetryableError -> send directly to DLQ (no retry)
|
|
516
526
|
* 2. If max retries exceeded -> send to DLQ
|
|
517
527
|
* 3. Otherwise -> publish to wait queue with TTL for retry
|
|
518
528
|
*
|
|
519
|
-
* **
|
|
520
|
-
* 1.
|
|
529
|
+
* **none mode (no retry config):**
|
|
530
|
+
* 1. send directly to DLQ (no retry)
|
|
521
531
|
*/
|
|
522
532
|
private handleError;
|
|
523
533
|
/**
|
|
524
|
-
* Handle error
|
|
534
|
+
* Handle error by requeuing immediately.
|
|
525
535
|
*
|
|
526
|
-
*
|
|
527
|
-
* -
|
|
528
|
-
*
|
|
536
|
+
* For quorum queues, messages are requeued with `nack(requeue=true)`, and the worker tracks delivery count via the native RabbitMQ `x-delivery-count` header.
|
|
537
|
+
* For classic queues, messages are re-published on the same queue, and the worker tracks delivery count via a custom `x-retry-count` header.
|
|
538
|
+
* When the count exceeds `maxRetries`, the message is automatically dead-lettered (if DLX is configured) or dropped.
|
|
529
539
|
*
|
|
530
540
|
* This is simpler than TTL-based retry but provides immediate retries only.
|
|
531
541
|
*/
|
|
532
|
-
private
|
|
542
|
+
private handleErrorImmediateRequeue;
|
|
533
543
|
/**
|
|
534
544
|
* Handle error using TTL + wait queue pattern for exponential backoff.
|
|
545
|
+
*
|
|
546
|
+
* ┌─────────────────────────────────────────────────────────────────┐
|
|
547
|
+
* │ Retry Flow (Native RabbitMQ TTL + Wait queue pattern) │
|
|
548
|
+
* ├─────────────────────────────────────────────────────────────────┤
|
|
549
|
+
* │ │
|
|
550
|
+
* │ 1. Handler throws any Error │
|
|
551
|
+
* │ ↓ │
|
|
552
|
+
* │ 2. Worker publishes to wait exchange |
|
|
553
|
+
* | (with header `x-wait-queue` set to the wait queue name) │
|
|
554
|
+
* │ ↓ │
|
|
555
|
+
* │ 3. Wait exchange routes to wait queue │
|
|
556
|
+
* │ (with expiration: calculated backoff delay) │
|
|
557
|
+
* │ ↓ │
|
|
558
|
+
* │ 4. Message waits in queue until TTL expires │
|
|
559
|
+
* │ ↓ │
|
|
560
|
+
* │ 5. Expired message dead-lettered to retry exchange |
|
|
561
|
+
* | (with header `x-retry-queue` set to the main queue name) │
|
|
562
|
+
* │ ↓ │
|
|
563
|
+
* │ 6. Retry exchange routes back to main queue → RETRY │
|
|
564
|
+
* │ ↓ │
|
|
565
|
+
* │ 7. If retries exhausted: nack without requeue → DLQ │
|
|
566
|
+
* │ │
|
|
567
|
+
* └─────────────────────────────────────────────────────────────────┘
|
|
535
568
|
*/
|
|
536
569
|
private handleErrorTtlBackoff;
|
|
537
570
|
/**
|
|
@@ -544,29 +577,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
544
577
|
*/
|
|
545
578
|
private parseMessageContentForRetry;
|
|
546
579
|
/**
|
|
547
|
-
* Publish message
|
|
548
|
-
*
|
|
549
|
-
* ┌─────────────────────────────────────────────────────────────────┐
|
|
550
|
-
* │ Retry Flow (Native RabbitMQ TTL + DLX Pattern) │
|
|
551
|
-
* ├─────────────────────────────────────────────────────────────────┤
|
|
552
|
-
* │ │
|
|
553
|
-
* │ 1. Handler throws any Error │
|
|
554
|
-
* │ ↓ │
|
|
555
|
-
* │ 2. Worker publishes to DLX with routing key: {queue}-wait │
|
|
556
|
-
* │ ↓ │
|
|
557
|
-
* │ 3. DLX routes to wait queue: {queue}-wait │
|
|
558
|
-
* │ (with expiration: calculated backoff delay) │
|
|
559
|
-
* │ ↓ │
|
|
560
|
-
* │ 4. Message waits in queue until TTL expires │
|
|
561
|
-
* │ ↓ │
|
|
562
|
-
* │ 5. Expired message dead-lettered to DLX │
|
|
563
|
-
* │ (with routing key: {queue}) │
|
|
564
|
-
* │ ↓ │
|
|
565
|
-
* │ 6. DLX routes back to main queue → RETRY │
|
|
566
|
-
* │ ↓ │
|
|
567
|
-
* │ 7. If retries exhausted: nack without requeue → DLQ │
|
|
568
|
-
* │ │
|
|
569
|
-
* └─────────────────────────────────────────────────────────────────┘
|
|
580
|
+
* Publish message with an incremented x-retry-count header and optional TTL.
|
|
570
581
|
*/
|
|
571
582
|
private publishForRetry;
|
|
572
583
|
/**
|
|
@@ -626,9 +637,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
626
637
|
* ```
|
|
627
638
|
*/
|
|
628
639
|
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
629
|
-
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options:
|
|
630
|
-
prefetch?: number;
|
|
631
|
-
}): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
640
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: ConsumerOptions): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
632
641
|
/**
|
|
633
642
|
* Define multiple type-safe handlers for consumers in a contract.
|
|
634
643
|
*
|
|
@@ -660,5 +669,5 @@ declare function defineHandler<TContract extends ContractDefinition, TName exten
|
|
|
660
669
|
*/
|
|
661
670
|
declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferConsumerHandlers<TContract>): WorkerInferConsumerHandlers<TContract>;
|
|
662
671
|
//#endregion
|
|
663
|
-
export { type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
|
|
672
|
+
export { type ConsumerOptions, type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
|
|
664
673
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@1.0.3/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts","../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger, MessageValidationError, TechnicalError, TelemetryProvider } from "@amqp-contract/core";
|
|
2
1
|
import { ConsumerDefinition, ConsumerEntry, ContractDefinition, InferConsumerNames, MessageDefinition } from "@amqp-contract/contract";
|
|
2
|
+
import { ConsumerOptions as ConsumerOptions$1, Logger, MessageValidationError, TechnicalError, TelemetryProvider } from "@amqp-contract/core";
|
|
3
3
|
import { Future, Result } from "@swan-io/boxed";
|
|
4
4
|
import * as amqp from "amqplib";
|
|
5
5
|
import { ConsumeMessage } from "amqplib";
|
|
@@ -7,7 +7,7 @@ import { TcpSocketConnectOpts } from "net";
|
|
|
7
7
|
import { ConnectionOptions } from "tls";
|
|
8
8
|
import { StandardSchemaV1 } from "@standard-schema/spec";
|
|
9
9
|
|
|
10
|
-
//#region ../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.
|
|
10
|
+
//#region ../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@1.0.3/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts
|
|
11
11
|
type ConnectionUrl = string | amqp.Options.Connect | {
|
|
12
12
|
url: string;
|
|
13
13
|
connectionOptions?: AmqpConnectionOptions;
|
|
@@ -196,9 +196,9 @@ declare function nonRetryable(message: string, cause?: unknown): NonRetryableErr
|
|
|
196
196
|
//#endregion
|
|
197
197
|
//#region src/types.d.ts
|
|
198
198
|
/**
|
|
199
|
-
* Infer the
|
|
199
|
+
* Infer the output type from a schema (used by consumers after validation)
|
|
200
200
|
*/
|
|
201
|
-
type
|
|
201
|
+
type InferSchemaOutput<TSchema extends StandardSchemaV1> = TSchema extends StandardSchemaV1<infer _TInput, infer TOutput> ? TOutput : never;
|
|
202
202
|
/**
|
|
203
203
|
* Extract the ConsumerDefinition from any consumer entry type.
|
|
204
204
|
* Handles ConsumerDefinition, EventConsumerResult, and CommandConsumerConfig.
|
|
@@ -207,15 +207,15 @@ type ExtractConsumerDefinition<T extends ConsumerEntry> = T extends ConsumerDefi
|
|
|
207
207
|
consumer: ConsumerDefinition;
|
|
208
208
|
} ? T["consumer"] : never;
|
|
209
209
|
/**
|
|
210
|
-
* Infer consumer message payload
|
|
210
|
+
* Infer consumer message payload output type.
|
|
211
211
|
* Works with any consumer entry type by first extracting the ConsumerDefinition.
|
|
212
212
|
*/
|
|
213
|
-
type
|
|
213
|
+
type ConsumerInferPayloadOutput<TConsumer extends ConsumerEntry> = ExtractConsumerDefinition<TConsumer> extends ConsumerDefinition ? InferSchemaOutput<ExtractConsumerDefinition<TConsumer>["message"]["payload"]> : never;
|
|
214
214
|
/**
|
|
215
|
-
* Infer consumer message headers
|
|
216
|
-
* Returns undefined if no headers schema is defined
|
|
215
|
+
* Infer consumer message headers output type
|
|
216
|
+
* Returns undefined if no headers schema is defined.
|
|
217
217
|
*/
|
|
218
|
-
type
|
|
218
|
+
type ConsumerInferHeadersOutput<TConsumer extends ConsumerEntry> = ExtractConsumerDefinition<TConsumer> extends ConsumerDefinition ? ExtractConsumerDefinition<TConsumer>["message"] extends MessageDefinition<infer _TPayload, infer THeaders> ? THeaders extends StandardSchemaV1<Record<string, unknown>> ? InferSchemaOutput<THeaders> : undefined : undefined : undefined;
|
|
219
219
|
/**
|
|
220
220
|
* Infer all consumers from contract
|
|
221
221
|
*/
|
|
@@ -227,12 +227,12 @@ type InferConsumer<TContract extends ContractDefinition, TName extends InferCons
|
|
|
227
227
|
/**
|
|
228
228
|
* Infer the payload type for a specific consumer
|
|
229
229
|
*/
|
|
230
|
-
type WorkerInferConsumerPayload<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> =
|
|
230
|
+
type WorkerInferConsumerPayload<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = ConsumerInferPayloadOutput<InferConsumer<TContract, TName>>;
|
|
231
231
|
/**
|
|
232
232
|
* Infer the headers type for a specific consumer
|
|
233
233
|
* Returns undefined if no headers schema is defined
|
|
234
234
|
*/
|
|
235
|
-
type WorkerInferConsumerHeaders<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> =
|
|
235
|
+
type WorkerInferConsumerHeaders<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = ConsumerInferHeadersOutput<InferConsumer<TContract, TName>>;
|
|
236
236
|
/**
|
|
237
237
|
* A consumed message containing parsed payload and headers.
|
|
238
238
|
*
|
|
@@ -297,9 +297,7 @@ type WorkerInferConsumerHandler<TContract extends ContractDefinition, TName exte
|
|
|
297
297
|
* Note: Retry configuration is now defined at the queue level in the contract,
|
|
298
298
|
* not at the handler level. See `QueueDefinition.retry` for configuration options.
|
|
299
299
|
*/
|
|
300
|
-
type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandler<TContract, TName> | readonly [WorkerInferConsumerHandler<TContract, TName>,
|
|
301
|
-
prefetch?: number;
|
|
302
|
-
}];
|
|
300
|
+
type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>> = WorkerInferConsumerHandler<TContract, TName> | readonly [WorkerInferConsumerHandler<TContract, TName>, ConsumerOptions];
|
|
303
301
|
/**
|
|
304
302
|
* Consumer handlers for a contract.
|
|
305
303
|
* All handlers return `Future<Result<void, HandlerError>>` for explicit error control.
|
|
@@ -317,6 +315,7 @@ type WorkerInferConsumerHandlerEntry<TContract extends ContractDefinition, TName
|
|
|
317
315
|
type WorkerInferConsumerHandlers<TContract extends ContractDefinition> = { [K in InferConsumerNames<TContract>]: WorkerInferConsumerHandlerEntry<TContract, K> };
|
|
318
316
|
//#endregion
|
|
319
317
|
//#region src/worker.d.ts
|
|
318
|
+
type ConsumerOptions = ConsumerOptions$1;
|
|
320
319
|
/**
|
|
321
320
|
* Options for creating a type-safe AMQP worker.
|
|
322
321
|
*
|
|
@@ -342,6 +341,9 @@ type WorkerInferConsumerHandlers<TContract extends ContractDefinition> = { [K in
|
|
|
342
341
|
* ]
|
|
343
342
|
* },
|
|
344
343
|
* urls: ['amqp://localhost'],
|
|
344
|
+
* defaultConsumerOptions: {
|
|
345
|
+
* prefetch: 5,
|
|
346
|
+
* },
|
|
345
347
|
* connectionOptions: {
|
|
346
348
|
* heartbeatIntervalInSeconds: 30
|
|
347
349
|
* },
|
|
@@ -369,6 +371,11 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
|
|
|
369
371
|
* OpenTelemetry instrumentation is automatically enabled if @opentelemetry/api is installed.
|
|
370
372
|
*/
|
|
371
373
|
telemetry?: TelemetryProvider | undefined;
|
|
374
|
+
/**
|
|
375
|
+
* Optional default consumer options applied to all consumer handlers.
|
|
376
|
+
* Handler-specific options provided in tuple form override these defaults.
|
|
377
|
+
*/
|
|
378
|
+
defaultConsumerOptions?: ConsumerOptions | undefined;
|
|
372
379
|
};
|
|
373
380
|
/**
|
|
374
381
|
* Type-safe AMQP worker for consuming messages from RabbitMQ.
|
|
@@ -384,7 +391,7 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
|
|
|
384
391
|
* import { defineQueue, defineMessage, defineContract, defineConsumer } from '@amqp-contract/contract';
|
|
385
392
|
* import { z } from 'zod';
|
|
386
393
|
*
|
|
387
|
-
* const orderQueue = defineQueue('order-processing'
|
|
394
|
+
* const orderQueue = defineQueue('order-processing');
|
|
388
395
|
* const orderMessage = defineMessage(z.object({
|
|
389
396
|
* orderId: z.string(),
|
|
390
397
|
* amount: z.number()
|
|
@@ -414,6 +421,7 @@ type CreateWorkerOptions<TContract extends ContractDefinition> = {
|
|
|
414
421
|
declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
415
422
|
private readonly contract;
|
|
416
423
|
private readonly amqpClient;
|
|
424
|
+
private readonly defaultConsumerOptions;
|
|
417
425
|
private readonly logger?;
|
|
418
426
|
/**
|
|
419
427
|
* Internal handler storage - handlers returning `Future<Result>`.
|
|
@@ -453,6 +461,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
453
461
|
handlers,
|
|
454
462
|
urls,
|
|
455
463
|
connectionOptions,
|
|
464
|
+
defaultConsumerOptions,
|
|
456
465
|
logger,
|
|
457
466
|
telemetry
|
|
458
467
|
}: CreateWorkerOptions<TContract>): Future<Result<TypedAmqpWorker<TContract>, TechnicalError>>;
|
|
@@ -507,31 +516,55 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
507
516
|
*
|
|
508
517
|
* Flow depends on retry mode:
|
|
509
518
|
*
|
|
510
|
-
* **
|
|
519
|
+
* **immediate-requeue mode:**
|
|
511
520
|
* 1. If NonRetryableError -> send directly to DLQ (no retry)
|
|
512
|
-
* 2.
|
|
521
|
+
* 2. If max retries exceeded -> send to DLQ
|
|
522
|
+
* 3. Otherwise -> requeue immediately for retry
|
|
513
523
|
*
|
|
514
524
|
* **ttl-backoff mode:**
|
|
515
525
|
* 1. If NonRetryableError -> send directly to DLQ (no retry)
|
|
516
526
|
* 2. If max retries exceeded -> send to DLQ
|
|
517
527
|
* 3. Otherwise -> publish to wait queue with TTL for retry
|
|
518
528
|
*
|
|
519
|
-
* **
|
|
520
|
-
* 1.
|
|
529
|
+
* **none mode (no retry config):**
|
|
530
|
+
* 1. send directly to DLQ (no retry)
|
|
521
531
|
*/
|
|
522
532
|
private handleError;
|
|
523
533
|
/**
|
|
524
|
-
* Handle error
|
|
534
|
+
* Handle error by requeuing immediately.
|
|
525
535
|
*
|
|
526
|
-
*
|
|
527
|
-
* -
|
|
528
|
-
*
|
|
536
|
+
* For quorum queues, messages are requeued with `nack(requeue=true)`, and the worker tracks delivery count via the native RabbitMQ `x-delivery-count` header.
|
|
537
|
+
* For classic queues, messages are re-published on the same queue, and the worker tracks delivery count via a custom `x-retry-count` header.
|
|
538
|
+
* When the count exceeds `maxRetries`, the message is automatically dead-lettered (if DLX is configured) or dropped.
|
|
529
539
|
*
|
|
530
540
|
* This is simpler than TTL-based retry but provides immediate retries only.
|
|
531
541
|
*/
|
|
532
|
-
private
|
|
542
|
+
private handleErrorImmediateRequeue;
|
|
533
543
|
/**
|
|
534
544
|
* Handle error using TTL + wait queue pattern for exponential backoff.
|
|
545
|
+
*
|
|
546
|
+
* ┌─────────────────────────────────────────────────────────────────┐
|
|
547
|
+
* │ Retry Flow (Native RabbitMQ TTL + Wait queue pattern) │
|
|
548
|
+
* ├─────────────────────────────────────────────────────────────────┤
|
|
549
|
+
* │ │
|
|
550
|
+
* │ 1. Handler throws any Error │
|
|
551
|
+
* │ ↓ │
|
|
552
|
+
* │ 2. Worker publishes to wait exchange |
|
|
553
|
+
* | (with header `x-wait-queue` set to the wait queue name) │
|
|
554
|
+
* │ ↓ │
|
|
555
|
+
* │ 3. Wait exchange routes to wait queue │
|
|
556
|
+
* │ (with expiration: calculated backoff delay) │
|
|
557
|
+
* │ ↓ │
|
|
558
|
+
* │ 4. Message waits in queue until TTL expires │
|
|
559
|
+
* │ ↓ │
|
|
560
|
+
* │ 5. Expired message dead-lettered to retry exchange |
|
|
561
|
+
* | (with header `x-retry-queue` set to the main queue name) │
|
|
562
|
+
* │ ↓ │
|
|
563
|
+
* │ 6. Retry exchange routes back to main queue → RETRY │
|
|
564
|
+
* │ ↓ │
|
|
565
|
+
* │ 7. If retries exhausted: nack without requeue → DLQ │
|
|
566
|
+
* │ │
|
|
567
|
+
* └─────────────────────────────────────────────────────────────────┘
|
|
535
568
|
*/
|
|
536
569
|
private handleErrorTtlBackoff;
|
|
537
570
|
/**
|
|
@@ -544,29 +577,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
544
577
|
*/
|
|
545
578
|
private parseMessageContentForRetry;
|
|
546
579
|
/**
|
|
547
|
-
* Publish message
|
|
548
|
-
*
|
|
549
|
-
* ┌─────────────────────────────────────────────────────────────────┐
|
|
550
|
-
* │ Retry Flow (Native RabbitMQ TTL + DLX Pattern) │
|
|
551
|
-
* ├─────────────────────────────────────────────────────────────────┤
|
|
552
|
-
* │ │
|
|
553
|
-
* │ 1. Handler throws any Error │
|
|
554
|
-
* │ ↓ │
|
|
555
|
-
* │ 2. Worker publishes to DLX with routing key: {queue}-wait │
|
|
556
|
-
* │ ↓ │
|
|
557
|
-
* │ 3. DLX routes to wait queue: {queue}-wait │
|
|
558
|
-
* │ (with expiration: calculated backoff delay) │
|
|
559
|
-
* │ ↓ │
|
|
560
|
-
* │ 4. Message waits in queue until TTL expires │
|
|
561
|
-
* │ ↓ │
|
|
562
|
-
* │ 5. Expired message dead-lettered to DLX │
|
|
563
|
-
* │ (with routing key: {queue}) │
|
|
564
|
-
* │ ↓ │
|
|
565
|
-
* │ 6. DLX routes back to main queue → RETRY │
|
|
566
|
-
* │ ↓ │
|
|
567
|
-
* │ 7. If retries exhausted: nack without requeue → DLQ │
|
|
568
|
-
* │ │
|
|
569
|
-
* └─────────────────────────────────────────────────────────────────┘
|
|
580
|
+
* Publish message with an incremented x-retry-count header and optional TTL.
|
|
570
581
|
*/
|
|
571
582
|
private publishForRetry;
|
|
572
583
|
/**
|
|
@@ -626,9 +637,7 @@ declare class TypedAmqpWorker<TContract extends ContractDefinition> {
|
|
|
626
637
|
* ```
|
|
627
638
|
*/
|
|
628
639
|
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
629
|
-
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options:
|
|
630
|
-
prefetch?: number;
|
|
631
|
-
}): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
640
|
+
declare function defineHandler<TContract extends ContractDefinition, TName extends InferConsumerNames<TContract>>(contract: TContract, consumerName: TName, handler: WorkerInferConsumerHandler<TContract, TName>, options: ConsumerOptions): WorkerInferConsumerHandlerEntry<TContract, TName>;
|
|
632
641
|
/**
|
|
633
642
|
* Define multiple type-safe handlers for consumers in a contract.
|
|
634
643
|
*
|
|
@@ -660,5 +669,5 @@ declare function defineHandler<TContract extends ContractDefinition, TName exten
|
|
|
660
669
|
*/
|
|
661
670
|
declare function defineHandlers<TContract extends ContractDefinition>(contract: TContract, handlers: WorkerInferConsumerHandlers<TContract>): WorkerInferConsumerHandlers<TContract>;
|
|
662
671
|
//#endregion
|
|
663
|
-
export { type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
|
|
672
|
+
export { type ConsumerOptions, type CreateWorkerOptions, type HandlerError, MessageValidationError, NonRetryableError, RetryableError, TypedAmqpWorker, type WorkerConsumedMessage, type WorkerInferConsumedMessage, type WorkerInferConsumerHandler, type WorkerInferConsumerHandlerEntry, type WorkerInferConsumerHandlers, type WorkerInferConsumerHeaders, defineHandler, defineHandlers, isHandlerError, isNonRetryableError, isRetryableError, nonRetryable, retryable };
|
|
664
673
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@0.
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["amqp","EventEmitter","TcpSocketConnectOpts","ConnectionOptions","ChannelWrapper","CreateChannelOpts","ConnectionUrl","Options","Connect","AmqpConnectionOptions","url","connectionOptions","ConnectListener","Connection","connection","arg","ConnectFailedListener","Error","err","Buffer","noDelay","timeout","keepAlive","keepAliveDelay","clientProperties","credentials","mechanism","username","password","response","AmqpConnectionManagerOptions","Promise","heartbeatIntervalInSeconds","reconnectTimeInSeconds","findServers","urls","callback","IAmqpConnectionManager","Function","ChannelModel","addListener","event","args","listener","reason","listeners","eventName","on","once","prependListener","prependOnceListener","removeListener","connect","options","reconnect","createChannel","close","isConnected","channelCount","AmqpConnectionManager","_channels","_currentUrl","_closed","_cancelRetriesHandler","_connectPromise","_currentConnection","_findServers","_urls","constructor","_connect","default"],"sources":["../../../node_modules/.pnpm/amqp-connection-manager@5.0.0_amqplib@1.0.3/node_modules/amqp-connection-manager/dist/types/AmqpConnectionManager.d.ts","../src/errors.ts","../src/types.ts","../src/worker.ts","../src/handlers.ts"],"x_google_ignoreList":[0],"mappings":"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"}
|