@diia-inhouse/diia-queue 13.3.3 → 14.0.10

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 (148) hide show
  1. package/dist/constants.js +9 -9
  2. package/dist/index.d.ts +27 -0
  3. package/dist/index.js +23 -21
  4. package/dist/interfaces/deps.d.ts +30 -0
  5. package/dist/interfaces/externalCommunicator.d.ts +58 -0
  6. package/dist/interfaces/index.d.ts +95 -0
  7. package/dist/interfaces/index.js +7 -30
  8. package/dist/interfaces/messageBrokerServiceConfig.d.ts +80 -0
  9. package/dist/interfaces/messageBrokerServiceConfig.js +27 -24
  10. package/dist/interfaces/messageHandler.d.ts +6 -0
  11. package/dist/interfaces/metrics/index.d.ts +23 -0
  12. package/dist/interfaces/metrics/index.js +12 -16
  13. package/dist/interfaces/options.d.ts +52 -0
  14. package/dist/interfaces/providers/rabbitmq/amqpConnection.d.ts +33 -0
  15. package/dist/interfaces/providers/rabbitmq/amqpConnection.js +14 -17
  16. package/dist/interfaces/providers/rabbitmq/amqpPublisher.d.ts +20 -0
  17. package/dist/interfaces/providers/rabbitmq/index.d.ts +107 -0
  18. package/dist/interfaces/providers/rabbitmq/index.js +35 -47
  19. package/dist/interfaces/queueConfig/configs.d.ts +47 -0
  20. package/dist/interfaces/queueConfig/configs.js +8 -9
  21. package/dist/interfaces/queueConfig/index.d.ts +1 -0
  22. package/dist/interfaces/queueContext.d.ts +8 -0
  23. package/dist/interfaces/queueStatus.d.ts +15 -0
  24. package/dist/interfaces/queueStatus.js +8 -9
  25. package/dist/metrics/index.js +5 -8
  26. package/dist/providers/index.d.ts +5 -0
  27. package/dist/providers/index.js +6 -22
  28. package/dist/providers/rabbitmq/amqpAsserter.d.ts +53 -0
  29. package/dist/providers/rabbitmq/amqpAsserter.js +369 -416
  30. package/dist/providers/rabbitmq/amqpConnection.d.ts +24 -0
  31. package/dist/providers/rabbitmq/amqpConnection.js +97 -150
  32. package/dist/providers/rabbitmq/amqpListener.d.ts +47 -0
  33. package/dist/providers/rabbitmq/amqpListener.js +218 -225
  34. package/dist/providers/rabbitmq/amqpPublisher.d.ts +38 -0
  35. package/dist/providers/rabbitmq/amqpPublisher.js +184 -191
  36. package/dist/providers/rabbitmq/index.d.ts +56 -0
  37. package/dist/providers/rabbitmq/index.js +161 -186
  38. package/dist/services/communicator.d.ts +66 -0
  39. package/dist/services/communicator.js +164 -186
  40. package/dist/services/eventBus.d.ts +25 -0
  41. package/dist/services/eventBus.js +45 -57
  42. package/dist/services/eventCommunicator.js +75 -124
  43. package/dist/services/eventMessageHandler.d.ts +25 -0
  44. package/dist/services/eventMessageHandler.js +112 -129
  45. package/dist/services/eventMessageValidator.d.ts +13 -0
  46. package/dist/services/eventMessageValidator.js +59 -44
  47. package/dist/services/externalCommunicator.d.ts +114 -0
  48. package/dist/services/externalCommunicator.js +149 -140
  49. package/dist/services/externalEventBus.d.ts +39 -0
  50. package/dist/services/externalEventBus.js +144 -162
  51. package/dist/services/index.d.ts +8 -0
  52. package/dist/services/index.js +10 -26
  53. package/dist/services/metrics.d.ts +15 -0
  54. package/dist/services/metrics.js +46 -49
  55. package/dist/services/optionsBuilder.d.ts +14 -0
  56. package/dist/services/optionsBuilder.js +43 -58
  57. package/dist/services/queue.d.ts +29 -0
  58. package/dist/services/queue.js +78 -93
  59. package/dist/services/scheduledTask.d.ts +30 -0
  60. package/dist/services/scheduledTask.js +60 -68
  61. package/dist/services/task.d.ts +33 -0
  62. package/dist/services/task.js +160 -176
  63. package/dist/utils.js +7 -11
  64. package/package.json +44 -50
  65. package/dist/constants.js.map +0 -1
  66. package/dist/index.js.map +0 -1
  67. package/dist/interfaces/deps.js +0 -3
  68. package/dist/interfaces/deps.js.map +0 -1
  69. package/dist/interfaces/externalCommunicator.js +0 -3
  70. package/dist/interfaces/externalCommunicator.js.map +0 -1
  71. package/dist/interfaces/index.js.map +0 -1
  72. package/dist/interfaces/messageBrokerServiceConfig.js.map +0 -1
  73. package/dist/interfaces/messageHandler.js +0 -3
  74. package/dist/interfaces/messageHandler.js.map +0 -1
  75. package/dist/interfaces/metrics/index.js.map +0 -1
  76. package/dist/interfaces/options.js +0 -3
  77. package/dist/interfaces/options.js.map +0 -1
  78. package/dist/interfaces/providers/rabbitmq/amqpConnection.js.map +0 -1
  79. package/dist/interfaces/providers/rabbitmq/amqpPublisher.js +0 -4
  80. package/dist/interfaces/providers/rabbitmq/amqpPublisher.js.map +0 -1
  81. package/dist/interfaces/providers/rabbitmq/index.js.map +0 -1
  82. package/dist/interfaces/queueConfig/configs.js.map +0 -1
  83. package/dist/interfaces/queueConfig/index.js +0 -18
  84. package/dist/interfaces/queueConfig/index.js.map +0 -1
  85. package/dist/interfaces/queueContext.js +0 -3
  86. package/dist/interfaces/queueContext.js.map +0 -1
  87. package/dist/interfaces/queueStatus.js.map +0 -1
  88. package/dist/interfaces/services/eventMessageHandler.js +0 -3
  89. package/dist/interfaces/services/eventMessageHandler.js.map +0 -1
  90. package/dist/metrics/index.js.map +0 -1
  91. package/dist/providers/index.js.map +0 -1
  92. package/dist/providers/rabbitmq/amqpAsserter.js.map +0 -1
  93. package/dist/providers/rabbitmq/amqpConnection.js.map +0 -1
  94. package/dist/providers/rabbitmq/amqpListener.js.map +0 -1
  95. package/dist/providers/rabbitmq/amqpPublisher.js.map +0 -1
  96. package/dist/providers/rabbitmq/index.js.map +0 -1
  97. package/dist/services/communicator.js.map +0 -1
  98. package/dist/services/eventBus.js.map +0 -1
  99. package/dist/services/eventCommunicator.js.map +0 -1
  100. package/dist/services/eventMessageHandler.js.map +0 -1
  101. package/dist/services/eventMessageValidator.js.map +0 -1
  102. package/dist/services/externalCommunicator.js.map +0 -1
  103. package/dist/services/externalEventBus.js.map +0 -1
  104. package/dist/services/index.js.map +0 -1
  105. package/dist/services/metrics.js.map +0 -1
  106. package/dist/services/optionsBuilder.js.map +0 -1
  107. package/dist/services/queue.js.map +0 -1
  108. package/dist/services/scheduledTask.js.map +0 -1
  109. package/dist/services/task.js.map +0 -1
  110. package/dist/types/constants.d.ts +0 -8
  111. package/dist/types/index.d.ts +0 -4
  112. package/dist/types/interfaces/deps.d.ts +0 -26
  113. package/dist/types/interfaces/externalCommunicator.d.ts +0 -54
  114. package/dist/types/interfaces/index.d.ts +0 -99
  115. package/dist/types/interfaces/messageBrokerServiceConfig.d.ts +0 -79
  116. package/dist/types/interfaces/messageHandler.d.ts +0 -2
  117. package/dist/types/interfaces/metrics/index.d.ts +0 -20
  118. package/dist/types/interfaces/options.d.ts +0 -49
  119. package/dist/types/interfaces/providers/rabbitmq/amqpConnection.d.ts +0 -29
  120. package/dist/types/interfaces/providers/rabbitmq/amqpPublisher.d.ts +0 -16
  121. package/dist/types/interfaces/providers/rabbitmq/index.d.ts +0 -114
  122. package/dist/types/interfaces/queueConfig/configs.d.ts +0 -47
  123. package/dist/types/interfaces/queueConfig/index.d.ts +0 -1
  124. package/dist/types/interfaces/queueContext.d.ts +0 -4
  125. package/dist/types/interfaces/queueStatus.d.ts +0 -11
  126. package/dist/types/interfaces/services/eventMessageHandler.d.ts +0 -5
  127. package/dist/types/metrics/index.d.ts +0 -3
  128. package/dist/types/providers/index.d.ts +0 -5
  129. package/dist/types/providers/rabbitmq/amqpAsserter.d.ts +0 -49
  130. package/dist/types/providers/rabbitmq/amqpConnection.d.ts +0 -20
  131. package/dist/types/providers/rabbitmq/amqpListener.d.ts +0 -42
  132. package/dist/types/providers/rabbitmq/amqpPublisher.d.ts +0 -34
  133. package/dist/types/providers/rabbitmq/index.d.ts +0 -52
  134. package/dist/types/services/communicator.d.ts +0 -57
  135. package/dist/types/services/eventBus.d.ts +0 -20
  136. package/dist/types/services/eventCommunicator.d.ts +0 -15
  137. package/dist/types/services/eventMessageHandler.d.ts +0 -19
  138. package/dist/types/services/eventMessageValidator.d.ts +0 -9
  139. package/dist/types/services/externalCommunicator.d.ts +0 -110
  140. package/dist/types/services/externalEventBus.d.ts +0 -33
  141. package/dist/types/services/index.d.ts +0 -9
  142. package/dist/types/services/metrics.d.ts +0 -11
  143. package/dist/types/services/optionsBuilder.d.ts +0 -10
  144. package/dist/types/services/queue.d.ts +0 -23
  145. package/dist/types/services/scheduledTask.d.ts +0 -25
  146. package/dist/types/services/task.d.ts +0 -28
  147. package/dist/types/utils.d.ts +0 -3
  148. package/dist/utils.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ import { EventMessageValidator } from "./eventMessageValidator.js";
2
+ import { EventMessageHandler } from "./eventMessageHandler.js";
3
+ import { EventBus } from "./eventBus.js";
4
+ import { ExternalCommunicator } from "./externalCommunicator.js";
5
+ import { ExternalEventBus } from "./externalEventBus.js";
6
+ import { Queue } from "./queue.js";
7
+ import { ScheduledTask } from "./scheduledTask.js";
8
+ import { Task } from "./task.js";
@@ -1,26 +1,10 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./eventBus"), exports);
18
- __exportStar(require("./eventMessageHandler"), exports);
19
- __exportStar(require("./eventMessageValidator"), exports);
20
- __exportStar(require("./externalCommunicator"), exports);
21
- __exportStar(require("./externalEventBus"), exports);
22
- __exportStar(require("./scheduledTask"), exports);
23
- __exportStar(require("./task"), exports);
24
- __exportStar(require("./queue"), exports);
25
- __exportStar(require("./metrics"), exports);
26
- //# sourceMappingURL=index.js.map
1
+ import "./eventBus.js";
2
+ import "./eventMessageHandler.js";
3
+ import "./eventMessageValidator.js";
4
+ import "./externalCommunicator.js";
5
+ import "./externalEventBus.js";
6
+ import "./scheduledTask.js";
7
+ import "./task.js";
8
+ import "./metrics.js";
9
+ import "./queue.js";
10
+ export {};
@@ -0,0 +1,15 @@
1
+ import { CommunicationDirection } from "../interfaces/metrics/index.js";
2
+ import { ErrorType } from "@diia-inhouse/errors";
3
+ import { MetricsService } from "@diia-inhouse/diia-metrics";
4
+
5
+ //#region src/services/metrics.d.ts
6
+ declare class RabbitMQMetricsService {
7
+ private metrics;
8
+ private readonly communicationsTotalMetric;
9
+ constructor(metrics: MetricsService);
10
+ collectResponseTotalMetric(startTime: bigint, route: string, source: string, destination: string, errorType?: ErrorType): void | never;
11
+ collectCommunicationsTotalMetric(event: string, source: string, destination: string, direction: CommunicationDirection, queue?: string): void;
12
+ collectRequestTotalMetric(startTime: bigint, route: string, source: string, destination: string, errorType?: ErrorType): void;
13
+ }
14
+ //#endregion
15
+ export { RabbitMQMetricsService };
@@ -1,49 +1,46 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const diia_metrics_1 = require("@diia-inhouse/diia-metrics");
4
- const metrics_1 = require("../interfaces/metrics");
5
- class RabbitMQMetricsService {
6
- metrics;
7
- communicationsTotalMetric = new diia_metrics_1.Counter(metrics_1.Metrics.CommunicationsTotal, metrics_1.communicationsTotalLabelsMap, 'Total rabbitmq communications made by service');
8
- constructor(metrics) {
9
- this.metrics = metrics;
10
- }
11
- collectResponseTotalMetric(startTime, route, source, destination, errorType) {
12
- const labels = {
13
- route,
14
- source,
15
- ...(errorType ? { errorType } : {}),
16
- destination,
17
- mechanism: diia_metrics_1.RequestMechanism.Rabbitmq,
18
- status: errorType ? diia_metrics_1.RequestStatus.Failed : diia_metrics_1.RequestStatus.Successful,
19
- };
20
- const finishTime = process.hrtime.bigint();
21
- const delta = finishTime - startTime;
22
- this.metrics.responseTotalTimerMetric.observeSeconds(labels, delta);
23
- }
24
- collectCommunicationsTotalMetric(event, source, destination, direction, queue) {
25
- const labels = {
26
- event,
27
- source,
28
- destination,
29
- direction,
30
- ...(queue ? { queue } : {}),
31
- };
32
- this.communicationsTotalMetric.increment(labels, 1);
33
- }
34
- collectRequestTotalMetric(startTime, route, source, destination, errorType) {
35
- const finishTime = process.hrtime.bigint();
36
- const delta = finishTime - startTime;
37
- const labels = {
38
- route,
39
- source,
40
- destination,
41
- mechanism: diia_metrics_1.RequestMechanism.Rabbitmq,
42
- status: errorType ? diia_metrics_1.RequestStatus.Failed : diia_metrics_1.RequestStatus.Successful,
43
- ...(errorType ? { errorType } : {}),
44
- };
45
- this.metrics.totalTimerMetric.observeSeconds(labels, delta);
46
- }
47
- }
48
- exports.default = RabbitMQMetricsService;
49
- //# sourceMappingURL=metrics.js.map
1
+ import { Metrics, communicationsTotalLabelsMap } from "../interfaces/metrics/index.js";
2
+ import { Counter, RequestMechanism, RequestStatus } from "@diia-inhouse/diia-metrics";
3
+ //#region src/services/metrics.ts
4
+ var RabbitMQMetricsService = class {
5
+ metrics;
6
+ communicationsTotalMetric = new Counter(Metrics.CommunicationsTotal, communicationsTotalLabelsMap, "Total rabbitmq communications made by service");
7
+ constructor(metrics) {
8
+ this.metrics = metrics;
9
+ }
10
+ collectResponseTotalMetric(startTime, route, source, destination, errorType) {
11
+ const labels = {
12
+ route,
13
+ source,
14
+ ...errorType ? { errorType } : {},
15
+ destination,
16
+ mechanism: RequestMechanism.Rabbitmq,
17
+ status: errorType ? RequestStatus.Failed : RequestStatus.Successful
18
+ };
19
+ const delta = process.hrtime.bigint() - startTime;
20
+ this.metrics.responseTotalTimerMetric.observeSeconds(labels, delta);
21
+ }
22
+ collectCommunicationsTotalMetric(event, source, destination, direction, queue) {
23
+ const labels = {
24
+ event,
25
+ source,
26
+ destination,
27
+ direction,
28
+ ...queue ? { queue } : {}
29
+ };
30
+ this.communicationsTotalMetric.increment(labels, 1);
31
+ }
32
+ collectRequestTotalMetric(startTime, route, source, destination, errorType) {
33
+ const delta = process.hrtime.bigint() - startTime;
34
+ const labels = {
35
+ route,
36
+ source,
37
+ destination,
38
+ mechanism: RequestMechanism.Rabbitmq,
39
+ status: errorType ? RequestStatus.Failed : RequestStatus.Successful,
40
+ ...errorType ? { errorType } : {}
41
+ };
42
+ this.metrics.totalTimerMetric.observeSeconds(labels, delta);
43
+ }
44
+ };
45
+ //#endregion
46
+ export { RabbitMQMetricsService as default };
@@ -0,0 +1,14 @@
1
+ import { ConsumerOptions, ExchangeName, QueueOptions } from "../interfaces/messageBrokerServiceConfig.js";
2
+ import { QueueName } from "../interfaces/queueConfig/configs.js";
3
+ import { RabbitMQProvider } from "../providers/rabbitmq/index.js";
4
+
5
+ //#region src/services/optionsBuilder.d.ts
6
+ declare class OptionsBuilder {
7
+ private readonly queueProvider;
8
+ constructor(queueProvider: RabbitMQProvider);
9
+ defineQueueOptionsBasedOnGlobalConfig(queueName?: QueueName, routingKey?: string): QueueOptions[];
10
+ defineConsumerOptionsBasedOnGlobalConfig(): ConsumerOptions;
11
+ getExchangeNamesByQueueName(queueName?: QueueName): ExchangeName[];
12
+ }
13
+ //#endregion
14
+ export { OptionsBuilder };
@@ -1,59 +1,44 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
1
+ import { QueueTypes } from "../interfaces/messageBrokerServiceConfig.js";
2
+ import constants_default from "../constants.js";
3
+ //#region src/services/optionsBuilder.ts
4
+ var OptionsBuilder = class {
5
+ queueProvider;
6
+ constructor(queueProvider) {
7
+ this.queueProvider = queueProvider;
8
+ }
9
+ defineQueueOptionsBasedOnGlobalConfig(queueName, routingKey = constants_default.DEFAULT_ROUTING_KEY) {
10
+ if (!queueName) return [];
11
+ const { rabbit: { listenerOptions: { queueOptions } = {}, declareOptions: { assertQueues, queuesOptions: overriddenQueuesOptions = {} } = {} } } = this.queueProvider.getConfig();
12
+ const exchangeNames = this.getExchangeNamesByQueueName(queueName);
13
+ const bindTo = [];
14
+ for (const exchangeName of exchangeNames) bindTo.push({
15
+ routingKey,
16
+ exchangeName,
17
+ bind: assertQueues
18
+ });
19
+ return [{
20
+ bindTo,
21
+ name: queueName,
22
+ declare: assertQueues,
23
+ options: queueOptions,
24
+ type: QueueTypes.Quorum,
25
+ consumerOptions: this.defineConsumerOptionsBasedOnGlobalConfig(),
26
+ ...overriddenQueuesOptions
27
+ }];
28
+ }
29
+ defineConsumerOptionsBasedOnGlobalConfig() {
30
+ const { rabbit: { listenerOptions: { prefetchCount, recreateChannelOptions = {} } = {} } } = this.queueProvider.getConfig();
31
+ return {
32
+ prefetchCount,
33
+ recreateChannelOptions
34
+ };
35
+ }
36
+ getExchangeNamesByQueueName(queueName) {
37
+ if (!queueName) return [];
38
+ const { queues } = this.queueProvider.getConfig();
39
+ if (!queues) return [];
40
+ return queues[queueName]?.topics || [];
41
+ }
4
42
  };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const constants_1 = __importDefault(require("../constants"));
7
- const messageBrokerServiceConfig_1 = require("../interfaces/messageBrokerServiceConfig");
8
- class OptionsBuilder {
9
- queueProvider;
10
- constructor(queueProvider) {
11
- this.queueProvider = queueProvider;
12
- }
13
- defineQueueOptionsBasedOnGlobalConfig(queueName, routingKey = constants_1.default.DEFAULT_ROUTING_KEY) {
14
- if (!queueName) {
15
- return [];
16
- }
17
- const { rabbit: { listenerOptions: { queueOptions } = {}, declareOptions: { assertQueues, queuesOptions: overriddenQueuesOptions = {} } = {}, }, } = this.queueProvider.getConfig();
18
- const exchangeNames = this.getExchangeNamesByQueueName(queueName);
19
- const bindTo = [];
20
- for (const exchangeName of exchangeNames) {
21
- bindTo.push({
22
- routingKey,
23
- exchangeName,
24
- bind: assertQueues,
25
- });
26
- }
27
- return [
28
- {
29
- bindTo,
30
- name: queueName,
31
- declare: assertQueues,
32
- options: queueOptions,
33
- type: messageBrokerServiceConfig_1.QueueTypes.Quorum,
34
- consumerOptions: this.defineConsumerOptionsBasedOnGlobalConfig(),
35
- ...overriddenQueuesOptions,
36
- },
37
- ];
38
- }
39
- defineConsumerOptionsBasedOnGlobalConfig() {
40
- const { rabbit: { listenerOptions: { prefetchCount, recreateChannelOptions = {} } = {} }, } = this.queueProvider.getConfig();
41
- return {
42
- prefetchCount,
43
- recreateChannelOptions,
44
- };
45
- }
46
- getExchangeNamesByQueueName(queueName) {
47
- if (!queueName) {
48
- return [];
49
- }
50
- const { queues } = this.queueProvider.getConfig();
51
- if (!queues) {
52
- return [];
53
- }
54
- const queue = queues[queueName];
55
- return queue?.topics || [];
56
- }
57
- }
58
- exports.default = OptionsBuilder;
59
- //# sourceMappingURL=optionsBuilder.js.map
43
+ //#endregion
44
+ export { OptionsBuilder as default };
@@ -0,0 +1,29 @@
1
+ import { MessageBrokerExternalServiceType, MessageBrokerInternalServiceType } from "../interfaces/messageBrokerServiceConfig.js";
2
+ import { QueueStatus } from "../interfaces/queueStatus.js";
3
+ import { QueueContext } from "../interfaces/queueContext.js";
4
+ import { QueueConnectionConfig } from "../interfaces/index.js";
5
+ import { RabbitMQProvider } from "../providers/rabbitmq/index.js";
6
+ import { HealthCheckResult, OnHealthCheck } from "@diia-inhouse/types";
7
+ import { MetricsService } from "@diia-inhouse/diia-metrics";
8
+ import Logger$1 from "@diia-inhouse/diia-logger";
9
+ import { AsyncLocalStorage } from "node:async_hooks";
10
+
11
+ //#region src/services/queue.d.ts
12
+ declare class Queue implements OnHealthCheck {
13
+ private readonly systemServiceName;
14
+ private readonly metrics;
15
+ private readonly connectionConfig;
16
+ private readonly asyncLocalStorage;
17
+ private readonly logger;
18
+ private readonly internalRabbitMQProvidersMap;
19
+ private readonly externalRabbitMQProvidersMap;
20
+ constructor(systemServiceName: string, metrics: MetricsService, connectionConfig: QueueConnectionConfig, asyncLocalStorage: AsyncLocalStorage<QueueContext>, logger: Logger$1);
21
+ onHealthCheck(): Promise<HealthCheckResult<QueueStatus>>;
22
+ makeInternalRabbitMQProvider(serviceType: MessageBrokerInternalServiceType): RabbitMQProvider;
23
+ makeExternalRabbitMQProvider(serviceType: MessageBrokerExternalServiceType): RabbitMQProvider;
24
+ private getProvidersStatus;
25
+ private getProvidersStatusDetails;
26
+ private getMessageBrokerServiceConfig;
27
+ }
28
+ //#endregion
29
+ export { Queue };
@@ -1,93 +1,78 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Queue = void 0;
4
- const types_1 = require("@diia-inhouse/types");
5
- const interfaces_1 = require("../interfaces");
6
- const rabbitmq_1 = require("../providers/rabbitmq");
7
- class Queue {
8
- systemServiceName;
9
- metrics;
10
- connectionConfig;
11
- asyncLocalStorage;
12
- logger;
13
- internalRabbitMQProvidersMap = new Map();
14
- externalRabbitMQProvidersMap = new Map();
15
- constructor(systemServiceName, metrics, connectionConfig, asyncLocalStorage, logger) {
16
- this.systemServiceName = systemServiceName;
17
- this.metrics = metrics;
18
- this.connectionConfig = connectionConfig;
19
- this.asyncLocalStorage = asyncLocalStorage;
20
- this.logger = logger;
21
- }
22
- async onHealthCheck() {
23
- const status = this.getProvidersStatus();
24
- return {
25
- status,
26
- details: {
27
- rabbit: {
28
- internal: this.getProvidersStatusDetails(this.internalRabbitMQProvidersMap),
29
- external: this.getProvidersStatusDetails(this.externalRabbitMQProvidersMap),
30
- },
31
- },
32
- };
33
- }
34
- makeInternalRabbitMQProvider(serviceType) {
35
- const provider = this.internalRabbitMQProvidersMap.get(serviceType);
36
- if (provider) {
37
- return provider;
38
- }
39
- const { internal: rabbitMQConfig, serviceRulesConfig: { queuesConfig, servicesConfig = {}, topicsConfig, messageBrokerServices }, } = this.connectionConfig;
40
- if (!rabbitMQConfig) {
41
- throw new Error(`External rabbitMQ config is not provided`);
42
- }
43
- const messageBrokerServiceConfig = this.getMessageBrokerServiceConfig(serviceType, messageBrokerServices);
44
- const serviceConfig = servicesConfig[interfaces_1.QueueConnectionType.Internal] || {};
45
- const rabbitMQProvider = new rabbitmq_1.RabbitMQProvider(this.systemServiceName, rabbitMQConfig, serviceConfig, topicsConfig[interfaces_1.QueueConnectionType.Internal], [], this.logger, this.metrics, this.asyncLocalStorage, queuesConfig[interfaces_1.QueueConfigType.Internal], messageBrokerServiceConfig);
46
- this.internalRabbitMQProvidersMap.set(serviceType, rabbitMQProvider);
47
- return rabbitMQProvider;
48
- }
49
- makeExternalRabbitMQProvider(serviceType) {
50
- const provider = this.externalRabbitMQProvidersMap.get(serviceType);
51
- if (provider) {
52
- return provider;
53
- }
54
- const { external: rabbitMQConfig, serviceRulesConfig: { servicesConfig = {}, topicsConfig, portalEvents = [], messageBrokerServices }, } = this.connectionConfig;
55
- if (!rabbitMQConfig) {
56
- throw new Error(`External rabbitMQ config is not provided`);
57
- }
58
- const messageBrokerServiceConfig = this.getMessageBrokerServiceConfig(serviceType, messageBrokerServices);
59
- const serviceConfig = servicesConfig[interfaces_1.QueueConnectionType.External] || {};
60
- const rabbitMQProvider = new rabbitmq_1.RabbitMQProvider(this.systemServiceName, rabbitMQConfig, serviceConfig, topicsConfig[interfaces_1.QueueConnectionType.External], portalEvents, this.logger, this.metrics, this.asyncLocalStorage, {}, messageBrokerServiceConfig);
61
- this.externalRabbitMQProvidersMap.set(serviceType, rabbitMQProvider);
62
- return rabbitMQProvider;
63
- }
64
- getProvidersStatus() {
65
- for (const provider of this.internalRabbitMQProvidersMap.values()) {
66
- const { listener: listenerStatus, publisher: publisherStatus } = provider.getStatus();
67
- if (publisherStatus !== interfaces_1.ConnectionStatus.Connected) {
68
- return types_1.HttpStatusCode.SERVICE_UNAVAILABLE;
69
- }
70
- if (listenerStatus !== undefined && listenerStatus !== interfaces_1.ConnectionStatus.Connected) {
71
- return types_1.HttpStatusCode.SERVICE_UNAVAILABLE;
72
- }
73
- }
74
- return types_1.HttpStatusCode.OK;
75
- }
76
- getProvidersStatusDetails(providersMap) {
77
- const details = {};
78
- for (const [serviceType, provider] of providersMap) {
79
- details[serviceType] = provider.getStatus();
80
- }
81
- return details;
82
- }
83
- getMessageBrokerServiceConfig(serviceType, messageBrokerServices) {
84
- const serviceConfig = messageBrokerServices?.[serviceType] || interfaces_1.emptyMessageBrokerServiceConfig;
85
- const generalConfig = messageBrokerServices?.['general'] || interfaces_1.emptyMessageBrokerServiceConfig;
86
- return {
87
- queuesOptions: [...serviceConfig.queuesOptions, ...generalConfig.queuesOptions],
88
- exchangesOptions: [...serviceConfig.exchangesOptions, ...generalConfig.exchangesOptions],
89
- };
90
- }
91
- }
92
- exports.Queue = Queue;
93
- //# sourceMappingURL=queue.js.map
1
+ import "../interfaces/providers/rabbitmq/amqpConnection.js";
2
+ import "../interfaces/queueStatus.js";
3
+ import { emptyMessageBrokerServiceConfig } from "../interfaces/messageBrokerServiceConfig.js";
4
+ import "../interfaces/queueConfig/configs.js";
5
+ import "../interfaces/index.js";
6
+ import { RabbitMQProvider } from "../providers/rabbitmq/index.js";
7
+ import { HttpStatusCode } from "@diia-inhouse/types";
8
+ //#region src/services/queue.ts
9
+ var Queue = class {
10
+ systemServiceName;
11
+ metrics;
12
+ connectionConfig;
13
+ asyncLocalStorage;
14
+ logger;
15
+ internalRabbitMQProvidersMap = /* @__PURE__ */ new Map();
16
+ externalRabbitMQProvidersMap = /* @__PURE__ */ new Map();
17
+ constructor(systemServiceName, metrics, connectionConfig, asyncLocalStorage, logger) {
18
+ this.systemServiceName = systemServiceName;
19
+ this.metrics = metrics;
20
+ this.connectionConfig = connectionConfig;
21
+ this.asyncLocalStorage = asyncLocalStorage;
22
+ this.logger = logger;
23
+ }
24
+ async onHealthCheck() {
25
+ return {
26
+ status: this.getProvidersStatus(),
27
+ details: { rabbit: {
28
+ internal: this.getProvidersStatusDetails(this.internalRabbitMQProvidersMap),
29
+ external: this.getProvidersStatusDetails(this.externalRabbitMQProvidersMap)
30
+ } }
31
+ };
32
+ }
33
+ makeInternalRabbitMQProvider(serviceType) {
34
+ const provider = this.internalRabbitMQProvidersMap.get(serviceType);
35
+ if (provider) return provider;
36
+ const { internal: rabbitMQConfig, serviceRulesConfig: { queuesConfig, servicesConfig = {}, topicsConfig, messageBrokerServices } } = this.connectionConfig;
37
+ if (!rabbitMQConfig) throw new Error(`External rabbitMQ config is not provided`);
38
+ const messageBrokerServiceConfig = this.getMessageBrokerServiceConfig(serviceType, messageBrokerServices);
39
+ const serviceConfig = servicesConfig["internal"] || {};
40
+ const rabbitMQProvider = new RabbitMQProvider(this.systemServiceName, rabbitMQConfig, serviceConfig, topicsConfig["internal"], [], this.logger, this.metrics, this.asyncLocalStorage, queuesConfig["internal"], messageBrokerServiceConfig);
41
+ this.internalRabbitMQProvidersMap.set(serviceType, rabbitMQProvider);
42
+ return rabbitMQProvider;
43
+ }
44
+ makeExternalRabbitMQProvider(serviceType) {
45
+ const provider = this.externalRabbitMQProvidersMap.get(serviceType);
46
+ if (provider) return provider;
47
+ const { external: rabbitMQConfig, serviceRulesConfig: { servicesConfig = {}, topicsConfig, portalEvents = [], messageBrokerServices } } = this.connectionConfig;
48
+ if (!rabbitMQConfig) throw new Error(`External rabbitMQ config is not provided`);
49
+ const messageBrokerServiceConfig = this.getMessageBrokerServiceConfig(serviceType, messageBrokerServices);
50
+ const serviceConfig = servicesConfig["external"] || {};
51
+ const rabbitMQProvider = new RabbitMQProvider(this.systemServiceName, rabbitMQConfig, serviceConfig, topicsConfig["external"], portalEvents, this.logger, this.metrics, this.asyncLocalStorage, {}, messageBrokerServiceConfig);
52
+ this.externalRabbitMQProvidersMap.set(serviceType, rabbitMQProvider);
53
+ return rabbitMQProvider;
54
+ }
55
+ getProvidersStatus() {
56
+ for (const provider of this.internalRabbitMQProvidersMap.values()) {
57
+ const { listener: listenerStatus, publisher: publisherStatus } = provider.getStatus();
58
+ if (publisherStatus !== "connected") return HttpStatusCode.SERVICE_UNAVAILABLE;
59
+ if (listenerStatus !== void 0 && listenerStatus !== "connected") return HttpStatusCode.SERVICE_UNAVAILABLE;
60
+ }
61
+ return HttpStatusCode.OK;
62
+ }
63
+ getProvidersStatusDetails(providersMap) {
64
+ const details = {};
65
+ for (const [serviceType, provider] of providersMap) details[serviceType] = provider.getStatus();
66
+ return details;
67
+ }
68
+ getMessageBrokerServiceConfig(serviceType, messageBrokerServices) {
69
+ const serviceConfig = messageBrokerServices?.[serviceType] || emptyMessageBrokerServiceConfig;
70
+ const generalConfig = messageBrokerServices?.["general"] || emptyMessageBrokerServiceConfig;
71
+ return {
72
+ queuesOptions: [...serviceConfig.queuesOptions, ...generalConfig.queuesOptions],
73
+ exchangesOptions: [...serviceConfig.exchangesOptions, ...generalConfig.exchangesOptions]
74
+ };
75
+ }
76
+ };
77
+ //#endregion
78
+ export { Queue };
@@ -0,0 +1,30 @@
1
+ import { ExchangeName, ExchangeOptions } from "../interfaces/messageBrokerServiceConfig.js";
2
+ import { QueueName } from "../interfaces/queueConfig/configs.js";
3
+ import { PublishingResult } from "../interfaces/providers/rabbitmq/amqpPublisher.js";
4
+ import { EventBusListener, MessageBrokerServiceEventsListener, ScheduledTasksQueue } from "../interfaces/index.js";
5
+ import { RabbitMQProvider } from "../providers/rabbitmq/index.js";
6
+ import { Communicator } from "./communicator.js";
7
+ import { EventMessageHandler } from "./eventMessageHandler.js";
8
+ import { OnInit } from "@diia-inhouse/types";
9
+ import Logger$1 from "@diia-inhouse/diia-logger";
10
+
11
+ //#region src/services/scheduledTask.d.ts
12
+ /**
13
+ * @deprecated use pkg-workflow entities instead
14
+ */
15
+ declare class ScheduledTask extends Communicator implements ScheduledTasksQueue, OnInit {
16
+ private readonly serviceName;
17
+ protected readonly scheduledTaskList: EventBusListener[];
18
+ private readonly queueName;
19
+ private readonly eventCommunicator;
20
+ private readonly eventRoutingPart;
21
+ constructor(serviceName: string, systemServiceName: string, queueProvider: RabbitMQProvider, scheduledTaskList: EventBusListener[], eventMessageHandler: EventMessageHandler, logger: Logger$1, hostName: string, queueName?: QueueName | undefined);
22
+ publish(eventName: string, serviceName: string): Promise<PublishingResult>;
23
+ protected getExchangeNameWithSuffix(exchangeName: ExchangeName): string;
24
+ protected getUnicastListeners(): MessageBrokerServiceEventsListener[];
25
+ protected getMulticastListeners(): MessageBrokerServiceEventsListener[];
26
+ protected override getProducerExchangesOptions(): ExchangeOptions[];
27
+ private getRoutingKey;
28
+ }
29
+ //#endregion
30
+ export { ScheduledTask };