@open-rlb/nestjs-amqp 2.0.14 → 2.1.1

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.
Files changed (79) hide show
  1. package/amqp-lib/amqp/connection.d.ts +5 -0
  2. package/amqp-lib/amqp/connection.js +78 -21
  3. package/amqp-lib/amqp/connection.js.map +1 -1
  4. package/amqp-lib/amqp/retry-policy.d.ts +25 -0
  5. package/amqp-lib/amqp/retry-policy.js +101 -0
  6. package/amqp-lib/amqp/retry-policy.js.map +1 -0
  7. package/amqp-lib/config/rabbitmq.config.d.ts +2 -0
  8. package/amqp-lib/index.d.ts +1 -0
  9. package/amqp-lib/index.js +1 -0
  10. package/amqp-lib/index.js.map +1 -1
  11. package/amqp-lib/models/errors.model.d.ts +4 -0
  12. package/amqp-lib/models/errors.model.js +9 -1
  13. package/amqp-lib/models/errors.model.js.map +1 -1
  14. package/amqp-lib/models/rabbitmq-handler.model.d.ts +2 -0
  15. package/modules/acl/acl.module.js +3 -1
  16. package/modules/acl/acl.module.js.map +1 -1
  17. package/modules/acl/cache/acl-cache.service.d.ts +5 -1
  18. package/modules/acl/cache/acl-cache.service.js +23 -3
  19. package/modules/acl/cache/acl-cache.service.js.map +1 -1
  20. package/modules/acl/config/acl.config.d.ts +8 -0
  21. package/modules/acl/const.d.ts +2 -0
  22. package/modules/acl/const.js +3 -1
  23. package/modules/acl/const.js.map +1 -1
  24. package/modules/acl/index.d.ts +1 -0
  25. package/modules/acl/index.js +1 -0
  26. package/modules/acl/index.js.map +1 -1
  27. package/modules/acl/services/acl-invalidation.service.d.ts +18 -0
  28. package/modules/acl/services/acl-invalidation.service.js +81 -0
  29. package/modules/acl/services/acl-invalidation.service.js.map +1 -0
  30. package/modules/acl/services/acl-management.service.d.ts +7 -1
  31. package/modules/acl/services/acl-management.service.js +31 -15
  32. package/modules/acl/services/acl-management.service.js.map +1 -1
  33. package/modules/acl/services/acl.service.d.ts +9 -1
  34. package/modules/acl/services/acl.service.js +42 -12
  35. package/modules/acl/services/acl.service.js.map +1 -1
  36. package/modules/broker/broker.module.d.ts +2 -0
  37. package/modules/broker/broker.module.js +23 -2
  38. package/modules/broker/broker.module.js.map +1 -1
  39. package/modules/broker/config/topics.config.d.ts +2 -0
  40. package/modules/broker/decorators/broker-action.decorator.d.ts +3 -1
  41. package/modules/broker/decorators/broker-action.decorator.js +2 -1
  42. package/modules/broker/decorators/broker-action.decorator.js.map +1 -1
  43. package/modules/broker/services/broker.service.js +39 -16
  44. package/modules/broker/services/broker.service.js.map +1 -1
  45. package/modules/broker/services/metadata-scanner.service.js +45 -32
  46. package/modules/broker/services/metadata-scanner.service.js.map +1 -1
  47. package/modules/gateway-admin/config/gateway-admin.config.d.ts +1 -0
  48. package/modules/gateway-admin/const.d.ts +2 -0
  49. package/modules/gateway-admin/const.js +3 -1
  50. package/modules/gateway-admin/const.js.map +1 -1
  51. package/modules/gateway-admin/index.d.ts +1 -0
  52. package/modules/gateway-admin/index.js +1 -0
  53. package/modules/gateway-admin/index.js.map +1 -1
  54. package/modules/gateway-admin/repository/http-path.repository.js.map +1 -1
  55. package/modules/gateway-admin/scheduler-lock.d.ts +8 -0
  56. package/modules/gateway-admin/scheduler-lock.js +8 -0
  57. package/modules/gateway-admin/scheduler-lock.js.map +1 -0
  58. package/modules/gateway-admin/services/gateway-metrics-rollup.service.d.ts +8 -1
  59. package/modules/gateway-admin/services/gateway-metrics-rollup.service.js +59 -4
  60. package/modules/gateway-admin/services/gateway-metrics-rollup.service.js.map +1 -1
  61. package/modules/gateway-admin/services/gateway-metrics.service.d.ts +4 -1
  62. package/modules/gateway-admin/services/gateway-metrics.service.js +19 -6
  63. package/modules/gateway-admin/services/gateway-metrics.service.js.map +1 -1
  64. package/modules/gateway-admin/services/gateway-retention.service.d.ts +4 -1
  65. package/modules/gateway-admin/services/gateway-retention.service.js +33 -3
  66. package/modules/gateway-admin/services/gateway-retention.service.js.map +1 -1
  67. package/modules/gateway-admin/services/route-sync.service.js +25 -5
  68. package/modules/gateway-admin/services/route-sync.service.js.map +1 -1
  69. package/modules/proxy/config/path-definition.config.d.ts +7 -0
  70. package/modules/proxy/services/http-handler.service.d.ts +3 -0
  71. package/modules/proxy/services/http-handler.service.js +54 -6
  72. package/modules/proxy/services/http-handler.service.js.map +1 -1
  73. package/modules/proxy/services/websocket.service.js +28 -2
  74. package/modules/proxy/services/websocket.service.js.map +1 -1
  75. package/package.json +1 -1
  76. package/schematics/nest-add/files/skills/rlb-amqp/references/config-schema.md +20 -3
  77. package/schematics/nest-add/files/skills/rlb-amqp/references/gotchas.md +19 -3
  78. package/schematics/nest-add/files/skills/rlb-amqp-acl/SKILL.md +35 -10
  79. 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.deserializeMessage(msg, rpcOptions);
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
- const errorHandler = rpcOptions.errorHandler ||
206
- this.config.defaultRpcErrorHandler ||
207
- (0, errorBehaviors_1.getHandlerForLegacyBehavior)(rpcOptions.errorBehavior ||
208
- this.config.defaultSubscribeErrorBehavior);
209
- await errorHandler(channel, msg, e);
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: msg.properties.correlationId.toString(),
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.deserializeMessage(msg, msgOptions);
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
- const errorHandler = msgOptions.errorHandler ||
444
- (0, errorBehaviors_1.getHandlerForLegacyBehavior)(msgOptions.errorBehavior ||
445
- this.config.defaultSubscribeErrorBehavior);
446
- await errorHandler(channel, msg, e);
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 wrapper.cancel(consumerTag);
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 Promise.all(managedChannels.map((channel) => channel.cancelAll()));
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;
@@ -3,3 +3,4 @@ export * from './amqp/errorBehaviors';
3
3
  export * from './config/rabbitmq.config';
4
4
  export * from './models/errors.model';
5
5
  export * from './models/nack.model';
6
+ export * from './amqp/retry-policy';
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
@@ -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,mCAA0C;AAC1C,iEAA4D;AAC5D,8EAAyE;AACzE,wDAAoD;AAEpD,MAAM,QAAQ,GAAe,CAAC,mCAAe,EAAE,wBAAU,EAAE,6CAAoB,CAAC,CAAC;AACjF,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,GAAG,SAAS;gBACZ,GAAG,QAAQ;aACZ;YACD,OAAO,EAAE,cAAc;SACxB,CAAC;IACJ,CAAC;CACF,CAAA;AAnBY,8BAAS;oBAAT,SAAS;IADrB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,SAAS,CAmBrB"}
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
  }