@open-rlb/nestjs-amqp 2.0.14 → 2.1.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/amqp-lib/amqp/connection.d.ts +5 -0
- package/amqp-lib/amqp/connection.js +78 -21
- package/amqp-lib/amqp/connection.js.map +1 -1
- package/amqp-lib/amqp/retry-policy.d.ts +25 -0
- package/amqp-lib/amqp/retry-policy.js +101 -0
- package/amqp-lib/amqp/retry-policy.js.map +1 -0
- package/amqp-lib/config/rabbitmq.config.d.ts +2 -0
- package/amqp-lib/index.d.ts +1 -0
- package/amqp-lib/index.js +1 -0
- package/amqp-lib/index.js.map +1 -1
- package/amqp-lib/models/errors.model.d.ts +4 -0
- package/amqp-lib/models/errors.model.js +9 -1
- package/amqp-lib/models/errors.model.js.map +1 -1
- package/amqp-lib/models/rabbitmq-handler.model.d.ts +2 -0
- package/modules/acl/acl.module.js +3 -1
- package/modules/acl/acl.module.js.map +1 -1
- package/modules/acl/cache/acl-cache.service.d.ts +5 -1
- package/modules/acl/cache/acl-cache.service.js +23 -3
- package/modules/acl/cache/acl-cache.service.js.map +1 -1
- package/modules/acl/config/acl.config.d.ts +8 -0
- package/modules/acl/const.d.ts +2 -0
- package/modules/acl/const.js +3 -1
- package/modules/acl/const.js.map +1 -1
- package/modules/acl/index.d.ts +1 -0
- package/modules/acl/index.js +1 -0
- package/modules/acl/index.js.map +1 -1
- package/modules/acl/services/acl-invalidation.service.d.ts +18 -0
- package/modules/acl/services/acl-invalidation.service.js +81 -0
- package/modules/acl/services/acl-invalidation.service.js.map +1 -0
- package/modules/acl/services/acl-management.service.d.ts +7 -1
- package/modules/acl/services/acl-management.service.js +31 -15
- package/modules/acl/services/acl-management.service.js.map +1 -1
- package/modules/acl/services/acl.service.d.ts +9 -1
- package/modules/acl/services/acl.service.js +42 -12
- package/modules/acl/services/acl.service.js.map +1 -1
- package/modules/broker/broker.module.d.ts +2 -0
- package/modules/broker/broker.module.js +23 -2
- package/modules/broker/broker.module.js.map +1 -1
- package/modules/broker/config/topics.config.d.ts +2 -0
- package/modules/broker/decorators/broker-action.decorator.d.ts +3 -1
- package/modules/broker/decorators/broker-action.decorator.js +2 -1
- package/modules/broker/decorators/broker-action.decorator.js.map +1 -1
- package/modules/broker/services/broker.service.js +39 -16
- package/modules/broker/services/broker.service.js.map +1 -1
- package/modules/broker/services/metadata-scanner.service.js +45 -32
- package/modules/broker/services/metadata-scanner.service.js.map +1 -1
- package/modules/gateway-admin/config/gateway-admin.config.d.ts +1 -0
- package/modules/gateway-admin/const.d.ts +2 -0
- package/modules/gateway-admin/const.js +3 -1
- package/modules/gateway-admin/const.js.map +1 -1
- package/modules/gateway-admin/index.d.ts +1 -0
- package/modules/gateway-admin/index.js +1 -0
- package/modules/gateway-admin/index.js.map +1 -1
- package/modules/gateway-admin/repository/http-path.repository.js.map +1 -1
- package/modules/gateway-admin/scheduler-lock.d.ts +8 -0
- package/modules/gateway-admin/scheduler-lock.js +8 -0
- package/modules/gateway-admin/scheduler-lock.js.map +1 -0
- package/modules/gateway-admin/services/gateway-metrics-rollup.service.d.ts +8 -1
- package/modules/gateway-admin/services/gateway-metrics-rollup.service.js +59 -4
- package/modules/gateway-admin/services/gateway-metrics-rollup.service.js.map +1 -1
- package/modules/gateway-admin/services/gateway-metrics.service.d.ts +4 -1
- package/modules/gateway-admin/services/gateway-metrics.service.js +19 -6
- package/modules/gateway-admin/services/gateway-metrics.service.js.map +1 -1
- package/modules/gateway-admin/services/gateway-retention.service.d.ts +4 -1
- package/modules/gateway-admin/services/gateway-retention.service.js +33 -3
- package/modules/gateway-admin/services/gateway-retention.service.js.map +1 -1
- package/modules/gateway-admin/services/route-sync.service.js +25 -5
- package/modules/gateway-admin/services/route-sync.service.js.map +1 -1
- package/modules/proxy/config/path-definition.config.d.ts +7 -0
- package/modules/proxy/services/http-handler.service.d.ts +3 -0
- package/modules/proxy/services/http-handler.service.js +54 -6
- package/modules/proxy/services/http-handler.service.js.map +1 -1
- package/modules/proxy/services/websocket.service.js +28 -2
- package/modules/proxy/services/websocket.service.js.map +1 -1
- package/package.json +1 -1
- package/schematics/nest-add/files/skills/rlb-amqp/references/config-schema.md +20 -3
- package/schematics/nest-add/files/skills/rlb-amqp/references/gotchas.md +19 -3
- package/schematics/nest-add/files/skills/rlb-amqp-acl/SKILL.md +35 -10
- package/schematics/nest-add/files/skills/rlb-amqp-gateway-admin/SKILL.md +27 -1
|
@@ -40,8 +40,13 @@ export declare class AmqpConnection implements OnApplicationShutdown, OnModuleIn
|
|
|
40
40
|
private setupInitChannel;
|
|
41
41
|
private setupQueuesWithBindings;
|
|
42
42
|
private processDirectReplyToMessage;
|
|
43
|
+
private consumersCanceled;
|
|
43
44
|
private consumerFactory;
|
|
44
45
|
private wrapConsumer;
|
|
46
|
+
private readonly assertedRetryWaitQueues;
|
|
47
|
+
private assertRetryWaitQueue;
|
|
48
|
+
private resolveErrorHandler;
|
|
49
|
+
private tryDeserializeMessage;
|
|
45
50
|
private setupSubscriberChannel;
|
|
46
51
|
private deserializeMessage;
|
|
47
52
|
private setupQueue;
|
|
@@ -26,13 +26,12 @@ const errors_model_1 = require("../models/errors.model");
|
|
|
26
26
|
const nack_model_1 = require("../models/nack.model");
|
|
27
27
|
const types_1 = require("../types");
|
|
28
28
|
const errorBehaviors_1 = require("./errorBehaviors");
|
|
29
|
+
const retry_policy_1 = require("./retry-policy");
|
|
29
30
|
const utils_1 = require("./utils");
|
|
30
31
|
const defaultConfig = {
|
|
31
32
|
name: 'default',
|
|
32
33
|
prefetchCount: 10,
|
|
33
34
|
defaultExchangeType: 'topic',
|
|
34
|
-
defaultRpcErrorHandler: (0, errorBehaviors_1.getHandlerForLegacyBehavior)(types_1.MessageHandlerErrorBehavior.REQUEUE),
|
|
35
|
-
defaultSubscribeErrorBehavior: types_1.MessageHandlerErrorBehavior.REQUEUE,
|
|
36
35
|
exchanges: [],
|
|
37
36
|
exchangeBindings: [],
|
|
38
37
|
queues: [],
|
|
@@ -62,6 +61,8 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
62
61
|
this._channels = {};
|
|
63
62
|
this._consumers = {};
|
|
64
63
|
this.outstandingMessageProcessing = new Set();
|
|
64
|
+
this.consumersCanceled = false;
|
|
65
|
+
this.assertedRetryWaitQueues = new Set();
|
|
65
66
|
if (config == undefined) {
|
|
66
67
|
this.logger.log('RabbitMQ config not provided, skipping connection initialization.');
|
|
67
68
|
return undefined;
|
|
@@ -73,10 +74,6 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
73
74
|
...config,
|
|
74
75
|
replyQueues: config.replyQueues || {},
|
|
75
76
|
};
|
|
76
|
-
let name = config?.connectionManagerOptions?.connectionOptions?.clientProperties?.connection_name;
|
|
77
|
-
if (name) {
|
|
78
|
-
name += '-' + process.pid;
|
|
79
|
-
}
|
|
80
77
|
const cred = config.connectionManagerOptions.connectionOptions.credentials;
|
|
81
78
|
if (cred && cred.mechanism?.toLowerCase() === 'plain') {
|
|
82
79
|
cred.response = amqplib_1.credentials.plain(cred.username, cred.password).response;
|
|
@@ -169,6 +166,7 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
169
166
|
}
|
|
170
167
|
async setupRpcChannel(handler, rpcOptions, channel) {
|
|
171
168
|
const queue = await this.setupQueue(rpcOptions, channel);
|
|
169
|
+
const errorHandler = this.resolveErrorHandler(rpcOptions, queue, 'rpc');
|
|
172
170
|
const { consumerTag } = await channel.consume(queue, this.wrapConsumer(async (msg) => {
|
|
173
171
|
try {
|
|
174
172
|
if (msg == null) {
|
|
@@ -180,7 +178,7 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
180
178
|
msg.fields.routingKey);
|
|
181
179
|
return;
|
|
182
180
|
}
|
|
183
|
-
const result = this.
|
|
181
|
+
const result = this.tryDeserializeMessage(msg, rpcOptions);
|
|
184
182
|
const response = await handler(result.message, msg, result.headers);
|
|
185
183
|
if (response instanceof nack_model_1.Nack) {
|
|
186
184
|
channel.nack(msg, false, response.requeue);
|
|
@@ -202,11 +200,12 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
202
200
|
return;
|
|
203
201
|
}
|
|
204
202
|
else {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
203
|
+
try {
|
|
204
|
+
await errorHandler(channel, msg, e);
|
|
205
|
+
}
|
|
206
|
+
catch (handlerError) {
|
|
207
|
+
this.logger.error(`Error handler failed for queue '${queue}': ${handlerError?.message}`);
|
|
208
|
+
}
|
|
210
209
|
}
|
|
211
210
|
}
|
|
212
211
|
}), rpcOptions?.queueOptions?.consumerOptions);
|
|
@@ -382,17 +381,25 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
382
381
|
if (msg == null) {
|
|
383
382
|
return;
|
|
384
383
|
}
|
|
384
|
+
const correlationId = msg.properties?.correlationId;
|
|
385
|
+
if (correlationId == null) {
|
|
386
|
+
this.logger.warn('Received a direct-reply message with no correlationId; dropping it.');
|
|
387
|
+
return;
|
|
388
|
+
}
|
|
385
389
|
const message = msg.content.length > 0
|
|
386
390
|
? this.config.deserializer(msg.content, msg)
|
|
387
391
|
: undefined;
|
|
388
392
|
const correlationMessage = {
|
|
389
|
-
correlationId:
|
|
393
|
+
correlationId: correlationId.toString(),
|
|
390
394
|
requestId: msg.properties?.headers?.['X-Request-ID']?.toString(),
|
|
391
395
|
message: message,
|
|
392
396
|
};
|
|
393
397
|
this.messageSubject.next(correlationMessage);
|
|
394
398
|
}
|
|
395
399
|
async consumerFactory(msgOptions, setupFunction) {
|
|
400
|
+
if (this.consumersCanceled) {
|
|
401
|
+
throw new Error(`Consumers were canceled (graceful drain): refusing to subscribe to queue '${msgOptions.queue}'`);
|
|
402
|
+
}
|
|
396
403
|
return new Promise((res) => {
|
|
397
404
|
const queueConfig = this.config.queues.find((q) => q.name === msgOptions.queue);
|
|
398
405
|
const consumerTagConfig = queueConfig?.consumerTag
|
|
@@ -405,6 +412,9 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
405
412
|
}
|
|
406
413
|
: {};
|
|
407
414
|
this.selectManagedChannel(msgOptions?.queueOptions?.channel).addSetup(async (channel) => {
|
|
415
|
+
if (this.consumersCanceled) {
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
408
418
|
const consumerTag = await setupFunction(channel, (0, utils_1.merge)(consumerTagConfig, msgOptions));
|
|
409
419
|
res({ consumerTag });
|
|
410
420
|
});
|
|
@@ -417,14 +427,59 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
417
427
|
messageProcessingPromise.finally(() => this.outstandingMessageProcessing.delete(messageProcessingPromise));
|
|
418
428
|
};
|
|
419
429
|
}
|
|
430
|
+
async assertRetryWaitQueue(waitQueue, delayMs, targetQueue) {
|
|
431
|
+
if (this.assertedRetryWaitQueues.has(waitQueue))
|
|
432
|
+
return;
|
|
433
|
+
this.assertedRetryWaitQueues.add(waitQueue);
|
|
434
|
+
await this._managedChannel.addSetup((channel) => channel.assertQueue(waitQueue, {
|
|
435
|
+
durable: true,
|
|
436
|
+
messageTtl: delayMs,
|
|
437
|
+
deadLetterExchange: '',
|
|
438
|
+
deadLetterRoutingKey: targetQueue,
|
|
439
|
+
expires: delayMs + 60_000,
|
|
440
|
+
}));
|
|
441
|
+
}
|
|
442
|
+
resolveErrorHandler(options, queue, kind) {
|
|
443
|
+
const legacy = (behavior) => (0, errorBehaviors_1.getHandlerForLegacyBehavior)(String(behavior).toUpperCase());
|
|
444
|
+
const retry = (policy) => (0, retry_policy_1.createRetryErrorHandler)(queue, policy, {
|
|
445
|
+
publish: this.publish.bind(this),
|
|
446
|
+
assertRetryWaitQueue: this.assertRetryWaitQueue.bind(this),
|
|
447
|
+
logger: {
|
|
448
|
+
warn: (m) => this.logger.warn(m),
|
|
449
|
+
error: (m) => this.logger.error(m),
|
|
450
|
+
},
|
|
451
|
+
});
|
|
452
|
+
if (options.errorHandler)
|
|
453
|
+
return options.errorHandler;
|
|
454
|
+
if (options.retry)
|
|
455
|
+
return retry(options.retry);
|
|
456
|
+
if (options.errorBehavior)
|
|
457
|
+
return legacy(options.errorBehavior);
|
|
458
|
+
if (this.config.retry)
|
|
459
|
+
return retry(this.config.retry);
|
|
460
|
+
if (kind === 'rpc' && this.config.defaultRpcErrorHandler)
|
|
461
|
+
return this.config.defaultRpcErrorHandler;
|
|
462
|
+
if (this.config.defaultSubscribeErrorBehavior)
|
|
463
|
+
return legacy(this.config.defaultSubscribeErrorBehavior);
|
|
464
|
+
return retry(retry_policy_1.DEFAULT_RETRY_POLICY);
|
|
465
|
+
}
|
|
466
|
+
tryDeserializeMessage(msg, options) {
|
|
467
|
+
try {
|
|
468
|
+
return this.deserializeMessage(msg, options);
|
|
469
|
+
}
|
|
470
|
+
catch (e) {
|
|
471
|
+
throw new errors_model_1.MessageDeserializationError(e);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
420
474
|
async setupSubscriberChannel(handler, msgOptions, channel, originalHandlerName = 'unknown', consumeOptions) {
|
|
421
475
|
const queue = await this.setupQueue(msgOptions, channel);
|
|
476
|
+
const errorHandler = this.resolveErrorHandler(msgOptions, queue, 'subscribe');
|
|
422
477
|
const { consumerTag } = await channel.consume(queue, this.wrapConsumer(async (msg) => {
|
|
423
478
|
try {
|
|
424
479
|
if (msg === null) {
|
|
425
480
|
throw new errors_model_1.NullMessageError();
|
|
426
481
|
}
|
|
427
|
-
const result = this.
|
|
482
|
+
const result = this.tryDeserializeMessage(msg, msgOptions);
|
|
428
483
|
const response = await handler(result.message, msg, result.headers);
|
|
429
484
|
if (response instanceof nack_model_1.Nack) {
|
|
430
485
|
channel.nack(msg, false, response.requeue);
|
|
@@ -440,10 +495,12 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
440
495
|
return;
|
|
441
496
|
}
|
|
442
497
|
else {
|
|
443
|
-
|
|
444
|
-
(
|
|
445
|
-
|
|
446
|
-
|
|
498
|
+
try {
|
|
499
|
+
await errorHandler(channel, msg, e);
|
|
500
|
+
}
|
|
501
|
+
catch (handlerError) {
|
|
502
|
+
this.logger.error(`Error handler failed for queue '${queue}': ${handlerError?.message}`);
|
|
503
|
+
}
|
|
447
504
|
}
|
|
448
505
|
}
|
|
449
506
|
}), consumeOptions);
|
|
@@ -545,9 +602,8 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
545
602
|
if (!consumer) {
|
|
546
603
|
return;
|
|
547
604
|
}
|
|
548
|
-
const wrapper = this.selectManagedChannel(consumer.msgOptions?.queueOptions?.channel);
|
|
549
605
|
try {
|
|
550
|
-
await
|
|
606
|
+
await consumer.channel.cancel(consumerTag);
|
|
551
607
|
}
|
|
552
608
|
catch (err) {
|
|
553
609
|
this.logger.warn?.(`Failed to cancel consumer ${consumerTag}: ${err?.message}`);
|
|
@@ -555,12 +611,13 @@ let AmqpConnection = AmqpConnection_1 = class AmqpConnection {
|
|
|
555
611
|
delete this._consumers[consumerTag];
|
|
556
612
|
}
|
|
557
613
|
async cancelAllConsumers() {
|
|
614
|
+
this.consumersCanceled = true;
|
|
558
615
|
const tags = Object.keys(this._consumers);
|
|
559
616
|
await Promise.all(tags.map((tag) => this.cancelConsumer(tag)));
|
|
560
617
|
}
|
|
561
618
|
async close() {
|
|
562
619
|
const managedChannels = Object.values(this._managedChannels);
|
|
563
|
-
await
|
|
620
|
+
await this.cancelAllConsumers();
|
|
564
621
|
if (this.outstandingMessageProcessing.size) {
|
|
565
622
|
this.logger.log(`Waiting for outstanding consumers, outstanding message count: ${this.outstandingMessageProcessing.size}`);
|
|
566
623
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/amqp-lib/amqp/connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/amqp-lib/amqp/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Options } from 'amqplib';
|
|
2
|
+
import { MessageErrorHandler } from '../types';
|
|
3
|
+
export interface RetryPolicyConfig {
|
|
4
|
+
maxAttempts?: number;
|
|
5
|
+
delayMs?: number;
|
|
6
|
+
onExhausted?: 'dead-letter' | 'drop';
|
|
7
|
+
deadLetter?: {
|
|
8
|
+
exchange: string;
|
|
9
|
+
routingKey?: string;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare const RETRY_COUNT_HEADER = "x-retry-count";
|
|
13
|
+
export declare const RETRY_ERROR_HEADER = "x-retry-error";
|
|
14
|
+
export declare const RETRY_ORIGIN_QUEUE_HEADER = "x-retry-origin-queue";
|
|
15
|
+
export declare const DEFAULT_RETRY_POLICY: RetryPolicyConfig;
|
|
16
|
+
export declare const RETRY_EXHAUSTED_ERROR = "RetryExhaustedError";
|
|
17
|
+
export interface RetryPolicyContext {
|
|
18
|
+
publish(exchange: string, routingKey: string, message: any, options?: Options.Publish): Promise<unknown>;
|
|
19
|
+
assertRetryWaitQueue(waitQueue: string, delayMs: number, targetQueue: string): Promise<void>;
|
|
20
|
+
logger: {
|
|
21
|
+
warn(msg: string): void;
|
|
22
|
+
error(msg: string): void;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare function createRetryErrorHandler(queue: string, policy: RetryPolicyConfig, ctx: RetryPolicyContext): MessageErrorHandler;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RETRY_EXHAUSTED_ERROR = exports.DEFAULT_RETRY_POLICY = exports.RETRY_ORIGIN_QUEUE_HEADER = exports.RETRY_ERROR_HEADER = exports.RETRY_COUNT_HEADER = void 0;
|
|
4
|
+
exports.createRetryErrorHandler = createRetryErrorHandler;
|
|
5
|
+
const errors_model_1 = require("../models/errors.model");
|
|
6
|
+
exports.RETRY_COUNT_HEADER = 'x-retry-count';
|
|
7
|
+
exports.RETRY_ERROR_HEADER = 'x-retry-error';
|
|
8
|
+
exports.RETRY_ORIGIN_QUEUE_HEADER = 'x-retry-origin-queue';
|
|
9
|
+
exports.DEFAULT_RETRY_POLICY = {
|
|
10
|
+
maxAttempts: 5,
|
|
11
|
+
delayMs: 0,
|
|
12
|
+
onExhausted: 'drop',
|
|
13
|
+
};
|
|
14
|
+
exports.RETRY_EXHAUSTED_ERROR = 'RetryExhaustedError';
|
|
15
|
+
const errorToPlain = (error) => ({
|
|
16
|
+
name: (error && typeof error === 'object' && error.name) ? String(error.name) : 'Error',
|
|
17
|
+
message: error?.message ?? String(error),
|
|
18
|
+
});
|
|
19
|
+
function createRetryErrorHandler(queue, policy, ctx) {
|
|
20
|
+
const maxAttempts = Math.max(1, policy.maxAttempts ?? exports.DEFAULT_RETRY_POLICY.maxAttempts);
|
|
21
|
+
const delayMs = policy.delayMs ?? exports.DEFAULT_RETRY_POLICY.delayMs;
|
|
22
|
+
const onExhausted = policy.onExhausted ?? (policy.deadLetter ? 'dead-letter' : 'drop');
|
|
23
|
+
return async (channel, msg, error) => {
|
|
24
|
+
try {
|
|
25
|
+
const attempts = Number(msg.properties.headers?.[exports.RETRY_COUNT_HEADER] ?? 0) + 1;
|
|
26
|
+
const retriable = !(error instanceof errors_model_1.MessageDeserializationError);
|
|
27
|
+
if (retriable && attempts < maxAttempts) {
|
|
28
|
+
await scheduleRetry(msg, attempts);
|
|
29
|
+
ctx.logger.warn(`[RETRY] queue '${queue}' attempt ${attempts}/${maxAttempts} failed (${error?.message}); retrying${delayMs > 0 ? ` in ${delayMs}ms` : ''}`);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
await replyErrorToRpcCaller(msg, error, attempts);
|
|
33
|
+
await exhaust(msg, error, attempts, retriable);
|
|
34
|
+
}
|
|
35
|
+
channel.ack(msg);
|
|
36
|
+
}
|
|
37
|
+
catch (republishError) {
|
|
38
|
+
ctx.logger.error(`[RETRY] queue '${queue}': could not re-publish/dead-letter message (${republishError?.message}); falling back to nack-requeue`);
|
|
39
|
+
try {
|
|
40
|
+
channel.nack(msg, false, true);
|
|
41
|
+
}
|
|
42
|
+
catch (nackError) {
|
|
43
|
+
ctx.logger.error(`[RETRY] queue '${queue}': nack failed (${nackError?.message}); message will be redelivered on reconnect`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
function retryProperties(msg, attempts, extraHeaders) {
|
|
48
|
+
const { headers, ...properties } = msg.properties;
|
|
49
|
+
const props = {
|
|
50
|
+
...properties,
|
|
51
|
+
headers: { ...headers, [exports.RETRY_COUNT_HEADER]: attempts, ...extraHeaders },
|
|
52
|
+
};
|
|
53
|
+
if (delayMs > 0)
|
|
54
|
+
delete props.expiration;
|
|
55
|
+
return props;
|
|
56
|
+
}
|
|
57
|
+
async function scheduleRetry(msg, attempts) {
|
|
58
|
+
if (delayMs > 0) {
|
|
59
|
+
const waitQueue = `${queue}.retry.${delayMs}`;
|
|
60
|
+
await ctx.assertRetryWaitQueue(waitQueue, delayMs, queue);
|
|
61
|
+
await ctx.publish('', waitQueue, msg.content, retryProperties(msg, attempts));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
await ctx.publish('', queue, msg.content, retryProperties(msg, attempts));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function replyErrorToRpcCaller(msg, error, attempts) {
|
|
68
|
+
const { replyTo, correlationId, headers } = msg.properties;
|
|
69
|
+
if (!replyTo || !correlationId)
|
|
70
|
+
return;
|
|
71
|
+
const cause = errorToPlain(error);
|
|
72
|
+
try {
|
|
73
|
+
await ctx.publish('', replyTo, {
|
|
74
|
+
success: false,
|
|
75
|
+
error: {
|
|
76
|
+
name: exports.RETRY_EXHAUSTED_ERROR,
|
|
77
|
+
message: `Handler for queue '${queue}' failed after ${attempts} attempt(s): ${cause.message}`,
|
|
78
|
+
cause,
|
|
79
|
+
},
|
|
80
|
+
}, { correlationId, headers });
|
|
81
|
+
}
|
|
82
|
+
catch (replyError) {
|
|
83
|
+
ctx.logger.warn(`[RETRY] queue '${queue}': could not send error reply to '${replyTo}' (${replyError?.message})`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async function exhaust(msg, error, attempts, retriable) {
|
|
87
|
+
const reason = retriable ? `exhausted after ${attempts}/${maxAttempts} attempts` : 'not retriable (deserialization failed)';
|
|
88
|
+
if (onExhausted === 'dead-letter' && policy.deadLetter?.exchange) {
|
|
89
|
+
const routingKey = policy.deadLetter.routingKey ?? msg.fields.routingKey;
|
|
90
|
+
await ctx.publish(policy.deadLetter.exchange, routingKey, msg.content, retryProperties(msg, attempts, {
|
|
91
|
+
[exports.RETRY_ERROR_HEADER]: errorToPlain(error).message,
|
|
92
|
+
[exports.RETRY_ORIGIN_QUEUE_HEADER]: queue,
|
|
93
|
+
}));
|
|
94
|
+
ctx.logger.error(`[RETRY] queue '${queue}': message ${reason} (${error?.message}); dead-lettered to '${policy.deadLetter.exchange}/${routingKey}'`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
ctx.logger.error(`[RETRY] queue '${queue}': message ${reason} (${error?.message}); dropped`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=retry-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-policy.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/amqp-lib/amqp/retry-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AmqpConnectionManagerOptions } from "amqp-connection-manager";
|
|
2
2
|
import { ConsumeMessage, Options } from "amqplib";
|
|
3
|
+
import { RetryPolicyConfig } from "../amqp/retry-policy";
|
|
3
4
|
import { MessageDeserializer, MessageErrorHandler, MessageHandlerErrorBehavior, MessageSerializer, RabbitMQChannels, RabbitMQHandlers, RabbitMQUriConfig } from "../types";
|
|
4
5
|
import { RabbitMQExchangeBindingConfig, RabbitMQExchangeConfig } from "./rabbitmq-exchange.config";
|
|
5
6
|
import { RabbitMQQueueConfig } from "./rabbitmq-queue.config";
|
|
@@ -24,6 +25,7 @@ export interface RabbitMQConfig {
|
|
|
24
25
|
defaultExchangeType?: string;
|
|
25
26
|
defaultRpcErrorHandler?: MessageErrorHandler;
|
|
26
27
|
defaultSubscribeErrorBehavior?: MessageHandlerErrorBehavior;
|
|
28
|
+
retry?: RetryPolicyConfig;
|
|
27
29
|
connectionInitOptions?: ConnectionInitOptions;
|
|
28
30
|
connectionManagerOptions?: AmqpConnectionManagerOptions;
|
|
29
31
|
registerHandlers?: boolean;
|
package/amqp-lib/index.d.ts
CHANGED
package/amqp-lib/index.js
CHANGED
|
@@ -19,4 +19,5 @@ __exportStar(require("./amqp/errorBehaviors"), exports);
|
|
|
19
19
|
__exportStar(require("./config/rabbitmq.config"), exports);
|
|
20
20
|
__exportStar(require("./models/errors.model"), exports);
|
|
21
21
|
__exportStar(require("./models/nack.model"), exports);
|
|
22
|
+
__exportStar(require("./amqp/retry-policy"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/amqp-lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/rlb-nestjs-amqp/src/amqp-lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC;AACtC,2DAAyC;AACzC,wDAAsC;AACtC,sDAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../libs/rlb-nestjs-amqp/src/amqp-lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC;AACtC,2DAAyC;AACzC,wDAAsC;AACtC,sDAAoC;AACpC,sDAAoC"}
|
|
@@ -4,6 +4,10 @@ export declare class RpcTimeoutError extends Error {
|
|
|
4
4
|
readonly routingKey: string;
|
|
5
5
|
constructor(timeout: number, exchange: string, routingKey: string);
|
|
6
6
|
}
|
|
7
|
+
export declare class MessageDeserializationError extends Error {
|
|
8
|
+
readonly cause: any;
|
|
9
|
+
constructor(cause: any);
|
|
10
|
+
}
|
|
7
11
|
export declare class NullMessageError extends Error {
|
|
8
12
|
constructor();
|
|
9
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConnectionNotAvailableError = exports.ChannelNotAvailableError = exports.NullMessageError = exports.RpcTimeoutError = void 0;
|
|
3
|
+
exports.ConnectionNotAvailableError = exports.ChannelNotAvailableError = exports.NullMessageError = exports.MessageDeserializationError = exports.RpcTimeoutError = void 0;
|
|
4
4
|
class RpcTimeoutError extends Error {
|
|
5
5
|
constructor(timeout, exchange, routingKey) {
|
|
6
6
|
super(`Failed to receive response within timeout of ${timeout}ms for exchange "${exchange}" and routing key "${routingKey}"`);
|
|
@@ -11,6 +11,14 @@ class RpcTimeoutError extends Error {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
exports.RpcTimeoutError = RpcTimeoutError;
|
|
14
|
+
class MessageDeserializationError extends Error {
|
|
15
|
+
constructor(cause) {
|
|
16
|
+
super(`Failed to deserialize message: ${cause?.message ?? cause}`);
|
|
17
|
+
this.cause = cause;
|
|
18
|
+
this.name = 'MessageDeserializationError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.MessageDeserializationError = MessageDeserializationError;
|
|
14
22
|
class NullMessageError extends Error {
|
|
15
23
|
constructor() {
|
|
16
24
|
super('Received null message');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.model.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/amqp-lib/models/errors.model.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAgB,SAAQ,KAAK;IACxC,YACkB,OAAe,EACf,QAAgB,EAChB,UAAkB;QAElC,KAAK,CACH,gDAAgD,OAAO,oBAAoB,QAAQ,sBAAsB,UAAU,GAAG,CACvH,CAAC;QANc,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAKlC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAXD,0CAWC;AAKD,MAAa,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AAKD,MAAa,wBAAyB,SAAQ,KAAK;IACjD;QACE,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAKD,MAAa,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AALD,kEAKC"}
|
|
1
|
+
{"version":3,"file":"errors.model.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/amqp-lib/models/errors.model.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAgB,SAAQ,KAAK;IACxC,YACkB,OAAe,EACf,QAAgB,EAChB,UAAkB;QAElC,KAAK,CACH,gDAAgD,OAAO,oBAAoB,QAAQ,sBAAsB,UAAU,GAAG,CACvH,CAAC;QANc,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAKlC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAXD,0CAWC;AAQD,MAAa,2BAA4B,SAAQ,KAAK;IACpD,YAA4B,KAAU;QACpC,KAAK,CAAC,kCAAkC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;QADzC,UAAK,GAAL,KAAK,CAAK;QAEpC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AALD,kEAKC;AAKD,MAAa,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AAKD,MAAa,wBAAyB,SAAQ,KAAK;IACjD;QACE,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAKD,MAAa,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AALD,kEAKC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Options } from "amqplib";
|
|
2
|
+
import { RetryPolicyConfig } from "../amqp/retry-policy";
|
|
2
3
|
import { QueueOptions } from "../config/rabbitmq-queue.config";
|
|
3
4
|
import { AssertQueueErrorHandler, BatchMessageErrorHandler, MessageDeserializer, MessageErrorHandler, MessageHandlerErrorBehavior } from "../types";
|
|
4
5
|
export interface RequestOptions {
|
|
@@ -21,6 +22,7 @@ export interface MessageHandlerOptions {
|
|
|
21
22
|
queueOptions?: QueueOptions;
|
|
22
23
|
errorBehavior?: MessageHandlerErrorBehavior;
|
|
23
24
|
errorHandler?: MessageErrorHandler;
|
|
25
|
+
retry?: RetryPolicyConfig;
|
|
24
26
|
assertQueueErrorHandler?: AssertQueueErrorHandler;
|
|
25
27
|
allowNonJsonMessages?: boolean;
|
|
26
28
|
createQueueIfNotExists?: boolean;
|
|
@@ -11,9 +11,10 @@ exports.AclModule = void 0;
|
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const const_1 = require("./const");
|
|
13
13
|
const acl_cache_service_1 = require("./cache/acl-cache.service");
|
|
14
|
+
const acl_invalidation_service_1 = require("./services/acl-invalidation.service");
|
|
14
15
|
const acl_management_service_1 = require("./services/acl-management.service");
|
|
15
16
|
const acl_service_1 = require("./services/acl.service");
|
|
16
|
-
const SERVICES = [acl_cache_service_1.AclCacheService, acl_service_1.AclService, acl_management_service_1.AclManagementService];
|
|
17
|
+
const SERVICES = [acl_cache_service_1.AclCacheService, acl_service_1.AclService, acl_invalidation_service_1.AclInvalidationService, acl_management_service_1.AclManagementService];
|
|
17
18
|
const MODULE_EXPORTS = [acl_service_1.AclService, acl_cache_service_1.AclCacheService];
|
|
18
19
|
let AclModule = AclModule_1 = class AclModule {
|
|
19
20
|
static forRoot(providers, options = {}) {
|
|
@@ -22,6 +23,7 @@ let AclModule = AclModule_1 = class AclModule {
|
|
|
22
23
|
global: true,
|
|
23
24
|
providers: [
|
|
24
25
|
{ provide: const_1.RLB_ACL_OPTIONS, useValue: options },
|
|
26
|
+
{ provide: const_1.RLB_ACL_INVALIDATION, useValue: options.invalidation },
|
|
25
27
|
...providers,
|
|
26
28
|
...SERVICES,
|
|
27
29
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acl.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/acl/acl.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAiE;AAEjE,
|
|
1
|
+
{"version":3,"file":"acl.module.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/modules/acl/acl.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAiE;AAEjE,mCAAgE;AAChE,iEAA4D;AAC5D,kFAA6E;AAC7E,8EAAyE;AACzE,wDAAoD;AAEpD,MAAM,QAAQ,GAAe,CAAC,mCAAe,EAAE,wBAAU,EAAE,iDAAsB,EAAE,6CAAoB,CAAC,CAAC;AACzG,MAAM,cAAc,GAAG,CAAC,wBAAU,EAAE,mCAAe,CAAC,CAAC;AAG9C,IAAM,SAAS,iBAAf,MAAM,SAAS;IAOpB,MAAM,CAAC,OAAO,CAAC,SAAqB,EAAE,UAA4B,EAAE;QAClE,OAAO;YACL,MAAM,EAAE,WAAS;YACjB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,uBAAe,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAC/C,EAAE,OAAO,EAAE,4BAAoB,EAAE,QAAQ,EAAE,OAAO,CAAC,YAAY,EAAE;gBACjE,GAAG,SAAS;gBACZ,GAAG,QAAQ;aACZ;YACD,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;CACF,CAAA;AApBY,8BAAS;oBAAT,SAAS;IADrB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,SAAS,CAoBrB"}
|
|
@@ -6,10 +6,14 @@ export declare class AclCacheService {
|
|
|
6
6
|
private readonly ram;
|
|
7
7
|
private readonly ramTtlMs;
|
|
8
8
|
private readonly l2TtlSec;
|
|
9
|
+
private readonly maxRamEntries;
|
|
10
|
+
private gen;
|
|
11
|
+
get generation(): number;
|
|
9
12
|
constructor(options: AclModuleOptions, store?: AclCacheStore);
|
|
10
13
|
private key;
|
|
14
|
+
private ramSet;
|
|
11
15
|
get(userId: string, action: string): Promise<boolean | null>;
|
|
12
|
-
set(userId: string, action: string, value: boolean): Promise<void>;
|
|
16
|
+
set(userId: string, action: string, value: boolean, seenGen?: number): Promise<void>;
|
|
13
17
|
invalidate(userId?: string): Promise<void>;
|
|
14
18
|
invalidateLocalRam(userId?: string): void;
|
|
15
19
|
}
|