@golemio/core 3.2.2-dev.2622707631 → 3.3.0-dev.2629226513

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.
@@ -8,6 +8,7 @@ declare const ContainerToken: {
8
8
  LoggerEmitterProvider: symbol;
9
9
  RequestLogger: symbol;
10
10
  AmqpConnector: symbol;
11
+ RedisConnector: symbol;
11
12
  StorageService: symbol;
12
13
  StorageServiceProvider: symbol;
13
14
  SaveRawDataMiddleware: symbol;
@@ -12,6 +12,7 @@ const ContainerToken = {
12
12
  LoggerEmitterProvider: Symbol(),
13
13
  RequestLogger: Symbol(),
14
14
  AmqpConnector: Symbol(),
15
+ RedisConnector: Symbol(),
15
16
  StorageService: Symbol(),
16
17
  StorageServiceProvider: Symbol(),
17
18
  SaveRawDataMiddleware: Symbol(),
@@ -1 +1 @@
1
- {"version":3,"file":"ContainerToken.js","sourceRoot":"","sources":["../../../src/input-gateway/ioc/ContainerToken.ts"],"names":[],"mappings":";;;AAAA,2DAAmD;AAEnD,MAAM,cAAc,GAAG;IACnB,MAAM,EAAE,MAAM,EAAE;IAChB;;OAEG;IACH,MAAM,EAAE,qBAAS,CAAC,MAAM;IACxB,aAAa,EAAE,MAAM,EAAE;IACvB,qBAAqB,EAAE,MAAM,EAAE;IAC/B,aAAa,EAAE,MAAM,EAAE;IACvB,aAAa,EAAE,MAAM,EAAE;IACvB,cAAc,EAAE,MAAM,EAAE;IACxB,sBAAsB,EAAE,MAAM,EAAE;IAChC,qBAAqB,EAAE,MAAM,EAAE;IAC/B,mBAAmB,EAAE,MAAM,EAAE;CAChC,CAAC;AAEO,wCAAc"}
1
+ {"version":3,"file":"ContainerToken.js","sourceRoot":"","sources":["../../../src/input-gateway/ioc/ContainerToken.ts"],"names":[],"mappings":";;;AAAA,2DAAmD;AAEnD,MAAM,cAAc,GAAG;IACnB,MAAM,EAAE,MAAM,EAAE;IAChB;;OAEG;IACH,MAAM,EAAE,qBAAS,CAAC,MAAM;IACxB,aAAa,EAAE,MAAM,EAAE;IACvB,qBAAqB,EAAE,MAAM,EAAE;IAC/B,aAAa,EAAE,MAAM,EAAE;IACvB,aAAa,EAAE,MAAM,EAAE;IACvB,cAAc,EAAE,MAAM,EAAE;IACxB,cAAc,EAAE,MAAM,EAAE;IACxB,sBAAsB,EAAE,MAAM,EAAE;IAChC,qBAAqB,EAAE,MAAM,EAAE;IAC/B,mBAAmB,EAAE,MAAM,EAAE;CAChC,CAAC;AAEO,wCAAc"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.InputGatewayContainer = void 0;
7
7
  const _helpers_1 = require("../../helpers");
8
8
  const SimpleConfig_1 = __importDefault(require("../../helpers/configuration/SimpleConfig"));
9
+ const IoRedisConnector_1 = require("../../helpers/data-access/redis/IoRedisConnector");
9
10
  const CoreToken_1 = require("../../helpers/ioc/CoreToken");
10
11
  const Di_1 = require("../../helpers/ioc/Di");
11
12
  const InputGatewayConfiguration_1 = require("../config/InputGatewayConfiguration");
@@ -40,6 +41,12 @@ InputGatewayContainer.register(ContainerToken_1.ContainerToken.AmqpConnector, {
40
41
  .register(ContainerToken_1.ContainerToken.StorageServiceProvider, StorageServiceProvider_1.StorageServiceProvider, singletonOptions)
41
42
  .register(ContainerToken_1.ContainerToken.StorageService, {
42
43
  useFactory: (0, tsyringe_1.instanceCachingFactory)((c) => c.resolve(ContainerToken_1.ContainerToken.StorageServiceProvider).service),
44
+ })
45
+ .register(ContainerToken_1.ContainerToken.RedisConnector, {
46
+ useFactory: (0, tsyringe_1.instanceCachingFactory)((c) => {
47
+ const simpleConfig = c.resolve(CoreToken_1.CoreToken.SimpleConfig);
48
+ return new IoRedisConnector_1.IoRedisConnector(simpleConfig.getValue("env.REDIS_CONN", ""), c.resolve(CoreToken_1.CoreToken.Logger));
49
+ }),
43
50
  });
44
51
  //#endregion
45
52
  //#region Middleware
@@ -1 +1 @@
1
- {"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../src/input-gateway/ioc/Di.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAsE;AAEtE,4FAA+D;AAE/D,2DAAmD;AACnD,6CAAkD;AAElD,mFAAiF;AACjF,+DAA6D;AAC7D,kFAAgF;AAChF,4EAA0E;AAC1E,4EAA0E;AAC1E,2EAAyE;AACzE,uCAA6D;AAC7D,qDAAkD;AAElD,wBAAwB;AACxB,MAAM,gBAAgB,GAAG,EAAE,SAAS,EAAE,oBAAS,CAAC,SAAS,EAAE,CAAC;AAC5D,MAAM,qBAAqB,GAAG,oBAAe,CAAC,oBAAoB,EAAE,CAAC;AA8C5D,sDAAqB;AA7C9B,YAAY;AAEZ,iBAAiB;AACjB,qBAAqB,CAAC,QAAQ,CAAiB,+BAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,qDAAyB,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAEjI,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAiB,+BAAc,CAAC,MAAM,CAAC,CAAC;AACpF,qBAAqB,CAAC,gBAAgB,CAClC,qBAAS,CAAC,YAAY,EACtB,IAAI,sBAAY,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CACtD,CAAC;AACF,qBAAqB,CAAC,gBAAgB,CAClC,+BAAc,CAAC,MAAM,EACrB,IAAA,uBAAY,EAAC;IACT,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC,SAAS;CAC7B,CAAC,CACL,CAAC;AACF,qBAAqB,CAAC,iBAAiB,CAAC,+BAAc,CAAC,qBAAqB,EAAE,6CAAqB,CAAC,CAAC,QAAQ,CACzG,+BAAc,CAAC,aAAa,EAC5B;IACI,UAAU,EAAE,IAAA,iCAAsB,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAwB,+BAAc,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC;CAC5H,CACJ,CAAC;AACF,qBAAqB,CAAC,gBAAgB,CAClC,+BAAc,CAAC,aAAa,EAC5B,IAAA,8BAAmB,EAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,+BAAc,CAAC,MAAM,CAAC,CAAC,CAC7F,CAAC;AACF,YAAY;AAEZ,qBAAqB;AACrB,qBAAqB,CAAC,QAAQ,CAAkB,+BAAc,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,6BAAa,EAAE,EAAE,gBAAgB,CAAC;KACvH,QAAQ,CAAC,+BAAc,CAAC,sBAAsB,EAAE,+CAAsB,EAAE,gBAAgB,CAAC;KACzF,QAAQ,CAAC,+BAAc,CAAC,cAAc,EAAE;IACrC,UAAU,EAAE,IAAA,iCAAsB,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAyB,+BAAc,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAC1F;CACJ,CAAC,CAAC;AACP,YAAY;AAEZ,oBAAoB;AACpB,qBAAqB,CAAC,iBAAiB,CAAC,+BAAc,CAAC,qBAAqB,EAAE,6CAAqB,CAAC,CAAC;AACrG,qBAAqB,CAAC,iBAAiB,CAAC,+BAAc,CAAC,mBAAmB,EAAE,yCAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../src/input-gateway/ioc/Di.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export * from "./datatype-strategy/XMLDataTypeStrategy";
13
13
  export * from "./protocol-strategy/FTPProtocolStrategy";
14
14
  export * from "./protocol-strategy/HTTPRequestProtocolStrategyStreamed";
15
15
  export * from "./protocol-strategy/GoogleCloudStorageProtocolStrategy";
16
+ export * from "./protocol-strategy/HTTPFetchProtocolStrategy";
16
17
  export * from "./protocol-strategy/PaginatedHTTPProtocolStrategy";
17
18
  export * from "./protocol-strategy/IProtocolStrategy";
18
19
  export * from "./protocol-strategy/IStreamingProtocolStrategy";
@@ -30,6 +30,7 @@ __exportStar(require("./datatype-strategy/XMLDataTypeStrategy"), exports);
30
30
  __exportStar(require("./protocol-strategy/FTPProtocolStrategy"), exports);
31
31
  __exportStar(require("./protocol-strategy/HTTPRequestProtocolStrategyStreamed"), exports);
32
32
  __exportStar(require("./protocol-strategy/GoogleCloudStorageProtocolStrategy"), exports);
33
+ __exportStar(require("./protocol-strategy/HTTPFetchProtocolStrategy"), exports);
33
34
  __exportStar(require("./protocol-strategy/PaginatedHTTPProtocolStrategy"), exports);
34
35
  __exportStar(require("./protocol-strategy/IProtocolStrategy"), exports);
35
36
  __exportStar(require("./protocol-strategy/IStreamingProtocolStrategy"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,4DAA0C;AAC1C,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0EAAwD;AACxD,wEAAsD;AACtD,2EAAyD;AACzD,4EAA0D;AAC1D,0EAAwD;AACxD,0EAAwD;AACxD,0FAAwE;AACxE,yFAAuE;AACvE,oFAAkE;AAClE,wEAAsD;AACtD,iFAA+D;AAC/D,+EAA6D;AAC7D,uFAAqE;AACrE,uEAAqD;AACrD,2EAAyD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6BAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,4DAA0C;AAC1C,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0EAAwD;AACxD,wEAAsD;AACtD,2EAAyD;AACzD,4EAA0D;AAC1D,0EAAwD;AACxD,0EAAwD;AACxD,0FAAwE;AACxE,yFAAuE;AACvE,gFAA8D;AAC9D,oFAAkE;AAClE,wEAAsD;AACtD,iFAA+D;AAC/D,+EAA6D;AAC7D,uFAAqE;AACrE,uEAAqD;AACrD,2EAAyD"}
@@ -5,6 +5,7 @@ export declare abstract class AbstractTaskWithoutValidation<TRawData extends obj
5
5
  queueTtl?: number;
6
6
  queuePrefix: string;
7
7
  queueType: "classic" | "quorum";
8
+ queueConsumerTimeout?: number;
8
9
  constructor(queuePrefix: string);
9
10
  get queueKey(): string;
10
11
  consume(msg: Message | null): Promise<void>;
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractTaskWithoutValidation = void 0;
4
4
  const AbortableTask_1 = require("./helpers/AbortableTask");
5
+ // Abort the in-process task slightly before the broker's x-consumer-timeout fires, so the task ends
6
+ // with a graceful AbortError instead of RabbitMQ force-closing the channel.
7
+ const CONSUMER_TIMEOUT_ABORT_MARGIN_MS = 10_000; // 10 seconds
5
8
  class AbstractTaskWithoutValidation {
6
9
  constructor(queuePrefix) {
7
10
  this.queueType = "quorum";
@@ -11,7 +14,12 @@ class AbstractTaskWithoutValidation {
11
14
  return `${this.queuePrefix}.${this.queueName}`;
12
15
  }
13
16
  async consume(msg) {
14
- return AbortableTask_1.AbortableTask.from(this.validateAndExecute(msg), this.queueKey);
17
+ const abortTimeout = this.queueConsumerTimeout !== undefined
18
+ ? this.queueConsumerTimeout > CONSUMER_TIMEOUT_ABORT_MARGIN_MS
19
+ ? this.queueConsumerTimeout - CONSUMER_TIMEOUT_ABORT_MARGIN_MS
20
+ : this.queueConsumerTimeout
21
+ : undefined;
22
+ return AbortableTask_1.AbortableTask.from(this.validateAndExecute(msg), this.queueKey, abortTimeout);
15
23
  }
16
24
  }
17
25
  exports.AbstractTaskWithoutValidation = AbstractTaskWithoutValidation;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractTaskWithoutValidation.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractTaskWithoutValidation.ts"],"names":[],"mappings":";;;AAEA,2DAAkE;AAElE,MAAsB,6BAA6B;IAM/C,YAAY,WAAmB;QAFxB,cAAS,GAAyB,QAAQ,CAAC;QAG9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAmB;QACpC,OAAO,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;CAMJ;AAtBD,sEAsBC"}
1
+ {"version":3,"file":"AbstractTaskWithoutValidation.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractTaskWithoutValidation.ts"],"names":[],"mappings":";;;AAEA,2DAAkE;AAElE,oGAAoG;AACpG,4EAA4E;AAC5E,MAAM,gCAAgC,GAAG,MAAM,CAAC,CAAC,aAAa;AAE9D,MAAsB,6BAA6B;IAO/C,YAAY,WAAmB;QAHxB,cAAS,GAAyB,QAAQ,CAAC;QAI9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,GAAmB;QACpC,MAAM,YAAY,GACd,IAAI,CAAC,oBAAoB,KAAK,SAAS;YACnC,CAAC,CAAC,IAAI,CAAC,oBAAoB,GAAG,gCAAgC;gBAC1D,CAAC,CAAC,IAAI,CAAC,oBAAoB,GAAG,gCAAgC;gBAC9D,CAAC,CAAC,IAAI,CAAC,oBAAoB;YAC/B,CAAC,CAAC,SAAS,CAAC;QAEpB,OAAO,6BAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzF,CAAC;CAMJ;AA9BD,sEA8BC"}
@@ -10,4 +10,5 @@ export declare abstract class AbstractWorker {
10
10
  getQueueDefinition(): IQueueDefinition;
11
11
  getQueuePrefix(): string;
12
12
  private getQueueTask;
13
+ private warnIfConsumerTimeoutOutOfBounds;
13
14
  }
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractWorker = void 0;
4
4
  const config_1 = require("../config");
5
+ const helpers_1 = require("../helpers");
6
+ const RECOMMENDED_MIN_CONSUMER_TIMEOUT_MS = 60_000; // 1 minute
7
+ const RECOMMENDED_MAX_CONSUMER_TIMEOUT_MS = 7_200_000; // 2 hours
5
8
  class AbstractWorker {
6
9
  constructor() {
7
10
  this.queues = [];
@@ -23,17 +26,33 @@ class AbstractWorker {
23
26
  return config_1.config.RABBIT_EXCHANGE_NAME + "." + this.name.toLowerCase();
24
27
  }
25
28
  getQueueTask(task) {
29
+ const queueArguments = { "x-queue-type": task.queueType };
30
+ // Only declare x-consumer-timeout when set, so untimed queues keep an undefined-free argument table.
31
+ if (task.queueConsumerTimeout !== undefined) {
32
+ this.warnIfConsumerTimeoutOutOfBounds(task.queueName, task.queueConsumerTimeout, task.queueTtl);
33
+ queueArguments["x-consumer-timeout"] = task.queueConsumerTimeout;
34
+ }
26
35
  return {
27
36
  name: task.queueName,
28
37
  options: {
29
38
  deadLetterExchange: config_1.config.RABBIT_EXCHANGE_NAME,
30
39
  deadLetterRoutingKey: "dead",
31
40
  messageTtl: task.queueTtl,
32
- arguments: { "x-queue-type": task.queueType },
41
+ arguments: queueArguments,
33
42
  },
34
43
  consume: task.consume.bind(task),
35
44
  };
36
45
  }
46
+ warnIfConsumerTimeoutOutOfBounds(queueName, consumerTimeout, queueTtl) {
47
+ if (consumerTimeout < RECOMMENDED_MIN_CONSUMER_TIMEOUT_MS || consumerTimeout > RECOMMENDED_MAX_CONSUMER_TIMEOUT_MS) {
48
+ helpers_1.log.warn(`Queue ${queueName}: queueConsumerTimeout ${consumerTimeout} ms is outside the recommended range ` +
49
+ `[${RECOMMENDED_MIN_CONSUMER_TIMEOUT_MS}, ${RECOMMENDED_MAX_CONSUMER_TIMEOUT_MS}] ms.`);
50
+ }
51
+ if (queueTtl !== undefined && consumerTimeout > queueTtl) {
52
+ helpers_1.log.warn(`Queue ${queueName}: queueConsumerTimeout ${consumerTimeout} ms exceeds the queue message TTL ` +
53
+ `${queueTtl} ms; the message may expire before the consumer timeout applies.`);
54
+ }
55
+ }
37
56
  }
38
57
  exports.AbstractWorker = AbstractWorker;
39
58
  //# sourceMappingURL=AbstractWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractWorker.ts"],"names":[],"mappings":";;;AAAA,sCAAoC;AAIpC,MAAsB,cAAc;IAApC;QAEY,WAAM,GAAiB,EAAE,CAAC;IAiCtC,CAAC;IA/BU,YAAY,CAAC,IAAW;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,kBAAkB;QACrB,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;IACN,CAAC;IAEM,cAAc;QACjB,OAAO,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACvE,CAAC;IAEO,YAAY,CAAC,IAAW;QAC5B,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,OAAO,EAAE;gBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;gBAC/C,oBAAoB,EAAE,MAAM;gBAC5B,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE;aAChD;YACD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC;IACN,CAAC;CACJ;AAnCD,wCAmCC"}
1
+ {"version":3,"file":"AbstractWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/AbstractWorker.ts"],"names":[],"mappings":";;;AAAA,sCAAoC;AACpC,wCAAkC;AAIlC,MAAM,mCAAmC,GAAG,MAAM,CAAC,CAAC,WAAW;AAC/D,MAAM,mCAAmC,GAAG,SAAS,CAAC,CAAC,UAAU;AAEjE,MAAsB,cAAc;IAApC;QAEY,WAAM,GAAiB,EAAE,CAAC;IAyDtC,CAAC;IAvDU,YAAY,CAAC,IAAW;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,kBAAkB;QACrB,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;IACN,CAAC;IAEM,cAAc;QACjB,OAAO,eAAM,CAAC,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACvE,CAAC;IAEO,YAAY,CAAC,IAAW;QAC5B,MAAM,cAAc,GAA4B,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAEnF,qGAAqG;QACrG,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChG,cAAc,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACrE,CAAC;QAED,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,OAAO,EAAE;gBACL,kBAAkB,EAAE,eAAM,CAAC,oBAAoB;gBAC/C,oBAAoB,EAAE,MAAM;gBAC5B,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzB,SAAS,EAAE,cAAc;aAC5B;YACD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACnC,CAAC;IACN,CAAC;IAEO,gCAAgC,CAAC,SAAiB,EAAE,eAAuB,EAAE,QAAiB;QAClG,IAAI,eAAe,GAAG,mCAAmC,IAAI,eAAe,GAAG,mCAAmC,EAAE,CAAC;YACjH,aAAG,CAAC,IAAI,CACJ,SAAS,SAAS,0BAA0B,eAAe,uCAAuC;gBAC9F,IAAI,mCAAmC,KAAK,mCAAmC,OAAO,CAC7F,CAAC;QACN,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,IAAI,eAAe,GAAG,QAAQ,EAAE,CAAC;YACvD,aAAG,CAAC,IAAI,CACJ,SAAS,SAAS,0BAA0B,eAAe,oCAAoC;gBAC3F,GAAG,QAAQ,kEAAkE,CACpF,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AA3DD,wCA2DC"}
@@ -2,7 +2,7 @@ interface AbortableExecutorFunction<T> {
2
2
  (resolve: (value: PromiseLike<T> | T) => void, reject: (reason: Error) => void, abortSignal: AbortSignal): void;
3
3
  }
4
4
  export declare class AbortableTask<T> extends Promise<T> {
5
- constructor(executor: AbortableExecutorFunction<T>, queueName: string);
6
- static from: <T_1>(promise: Promise<T_1>, queueName: string) => Promise<T_1>;
5
+ constructor(executor: AbortableExecutorFunction<T>, queueName: string, consumerTimeout?: number);
6
+ static from: <T_1>(promise: Promise<T_1>, queueName: string, consumerTimeout?: number) => Promise<T_1>;
7
7
  }
8
8
  export {};
@@ -5,9 +5,10 @@ const errors_1 = require("@golemio/errors");
5
5
  const ioc_1 = require("../../ioc");
6
6
  const CoreToken_1 = require("../../../helpers/ioc/CoreToken");
7
7
  class AbortableTask extends Promise {
8
- constructor(executor, queueName) {
8
+ constructor(executor, queueName, consumerTimeout) {
9
9
  const simpleConfig = ioc_1.IntegrationEngineContainer.resolve(CoreToken_1.CoreToken.SimpleConfig);
10
- const abortSignal = AbortSignal.timeout(Number(simpleConfig.getValue("env.RABBIT_CONSUMER_TIMEOUT", 1740000)));
10
+ const timeout = consumerTimeout ?? Number(simpleConfig.getValue("env.RABBIT_CONSUMER_TIMEOUT", 1740000));
11
+ const abortSignal = AbortSignal.timeout(timeout);
11
12
  super((resolve, reject) => {
12
13
  abortSignal.addEventListener("abort", () => {
13
14
  reject(new errors_1.AbortError(`Task aborted due to timeout (${queueName})`));
@@ -17,12 +18,12 @@ class AbortableTask extends Promise {
17
18
  }
18
19
  }
19
20
  exports.AbortableTask = AbortableTask;
20
- AbortableTask.from = (promise, queueName) => {
21
+ AbortableTask.from = (promise, queueName, consumerTimeout) => {
21
22
  if (promise instanceof AbortableTask) {
22
23
  return promise;
23
24
  }
24
25
  return new AbortableTask((resolve, reject) => {
25
26
  promise.then(resolve).catch(reject);
26
- }, queueName);
27
+ }, queueName, consumerTimeout);
27
28
  };
28
29
  //# sourceMappingURL=AbortableTask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbortableTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/helpers/AbortableTask.ts"],"names":[],"mappings":";;;AAAA,4CAA6C;AAC7C,mCAAqD;AAErD,8DAAmD;AAMnD,MAAa,aAAiB,SAAQ,OAAU;IAC5C,YAAY,QAAsC,EAAE,SAAiB;QACjE,MAAM,YAAY,GAAG,gCAA0B,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QAC/F,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAE/G,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;YAC5B,WAAW,CAAC,gBAAgB,CACxB,OAAO,EACP,GAAG,EAAE;gBACD,MAAM,CAAC,IAAI,mBAAU,CAAC,gCAAgC,SAAS,GAAG,CAAC,CAAC,CAAC;YACzE,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;YAEF,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;;AAhBL,sCA2BC;AATU,kBAAI,GAAG,CAAI,OAAmB,EAAE,SAAiB,EAAc,EAAE;IACpE,IAAI,OAAO,YAAY,aAAa,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,aAAa,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,EAAE,SAAS,CAAC,CAAC;AAClB,CAAC,CAAC"}
1
+ {"version":3,"file":"AbortableTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/helpers/AbortableTask.ts"],"names":[],"mappings":";;;AAAA,4CAA6C;AAC7C,mCAAqD;AAErD,8DAAmD;AAMnD,MAAa,aAAiB,SAAQ,OAAU;IAC5C,YAAY,QAAsC,EAAE,SAAiB,EAAE,eAAwB;QAC3F,MAAM,YAAY,GAAG,gCAA0B,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QAC/F,MAAM,OAAO,GAAG,eAAe,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC,CAAC;QACzG,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEjD,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAQ,EAAE;YAC5B,WAAW,CAAC,gBAAgB,CACxB,OAAO,EACP,GAAG,EAAE;gBACD,MAAM,CAAC,IAAI,mBAAU,CAAC,gCAAgC,SAAS,GAAG,CAAC,CAAC,CAAC;YACzE,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACjB,CAAC;YAEF,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;;AAjBL,sCAgCC;AAbU,kBAAI,GAAG,CAAI,OAAmB,EAAE,SAAiB,EAAE,eAAwB,EAAc,EAAE;IAC9F,IAAI,OAAO,YAAY,aAAa,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,aAAa,CACpB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,EACD,SAAS,EACT,eAAe,CAClB,CAAC;AACN,CAAC,CAAC"}
@@ -4,5 +4,6 @@ export interface ITask {
4
4
  queueTtl?: number;
5
5
  queuePrefix: string;
6
6
  queueType: "classic" | "quorum";
7
+ queueConsumerTimeout?: number;
7
8
  consume(msg: Message | null): any;
8
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/core",
3
- "version": "3.2.2-dev.2622707631",
3
+ "version": "3.3.0-dev.2629226513",
4
4
  "description": "Golemio Core Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",