@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.
- package/dist/constants.js +9 -9
- package/dist/index.d.ts +27 -0
- package/dist/index.js +23 -21
- package/dist/interfaces/deps.d.ts +30 -0
- package/dist/interfaces/externalCommunicator.d.ts +58 -0
- package/dist/interfaces/index.d.ts +95 -0
- package/dist/interfaces/index.js +7 -30
- package/dist/interfaces/messageBrokerServiceConfig.d.ts +80 -0
- package/dist/interfaces/messageBrokerServiceConfig.js +27 -24
- package/dist/interfaces/messageHandler.d.ts +6 -0
- package/dist/interfaces/metrics/index.d.ts +23 -0
- package/dist/interfaces/metrics/index.js +12 -16
- package/dist/interfaces/options.d.ts +52 -0
- package/dist/interfaces/providers/rabbitmq/amqpConnection.d.ts +33 -0
- package/dist/interfaces/providers/rabbitmq/amqpConnection.js +14 -17
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.d.ts +20 -0
- package/dist/interfaces/providers/rabbitmq/index.d.ts +107 -0
- package/dist/interfaces/providers/rabbitmq/index.js +35 -47
- package/dist/interfaces/queueConfig/configs.d.ts +47 -0
- package/dist/interfaces/queueConfig/configs.js +8 -9
- package/dist/interfaces/queueConfig/index.d.ts +1 -0
- package/dist/interfaces/queueContext.d.ts +8 -0
- package/dist/interfaces/queueStatus.d.ts +15 -0
- package/dist/interfaces/queueStatus.js +8 -9
- package/dist/metrics/index.js +5 -8
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.js +6 -22
- package/dist/providers/rabbitmq/amqpAsserter.d.ts +53 -0
- package/dist/providers/rabbitmq/amqpAsserter.js +369 -416
- package/dist/providers/rabbitmq/amqpConnection.d.ts +24 -0
- package/dist/providers/rabbitmq/amqpConnection.js +97 -150
- package/dist/providers/rabbitmq/amqpListener.d.ts +47 -0
- package/dist/providers/rabbitmq/amqpListener.js +218 -225
- package/dist/providers/rabbitmq/amqpPublisher.d.ts +38 -0
- package/dist/providers/rabbitmq/amqpPublisher.js +184 -191
- package/dist/providers/rabbitmq/index.d.ts +56 -0
- package/dist/providers/rabbitmq/index.js +161 -186
- package/dist/services/communicator.d.ts +66 -0
- package/dist/services/communicator.js +164 -186
- package/dist/services/eventBus.d.ts +25 -0
- package/dist/services/eventBus.js +45 -57
- package/dist/services/eventCommunicator.js +75 -124
- package/dist/services/eventMessageHandler.d.ts +25 -0
- package/dist/services/eventMessageHandler.js +112 -129
- package/dist/services/eventMessageValidator.d.ts +13 -0
- package/dist/services/eventMessageValidator.js +59 -44
- package/dist/services/externalCommunicator.d.ts +114 -0
- package/dist/services/externalCommunicator.js +149 -140
- package/dist/services/externalEventBus.d.ts +39 -0
- package/dist/services/externalEventBus.js +144 -162
- package/dist/services/index.d.ts +8 -0
- package/dist/services/index.js +10 -26
- package/dist/services/metrics.d.ts +15 -0
- package/dist/services/metrics.js +46 -49
- package/dist/services/optionsBuilder.d.ts +14 -0
- package/dist/services/optionsBuilder.js +43 -58
- package/dist/services/queue.d.ts +29 -0
- package/dist/services/queue.js +78 -93
- package/dist/services/scheduledTask.d.ts +30 -0
- package/dist/services/scheduledTask.js +60 -68
- package/dist/services/task.d.ts +33 -0
- package/dist/services/task.js +160 -176
- package/dist/utils.js +7 -11
- package/package.json +44 -50
- package/dist/constants.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/deps.js +0 -3
- package/dist/interfaces/deps.js.map +0 -1
- package/dist/interfaces/externalCommunicator.js +0 -3
- package/dist/interfaces/externalCommunicator.js.map +0 -1
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/messageBrokerServiceConfig.js.map +0 -1
- package/dist/interfaces/messageHandler.js +0 -3
- package/dist/interfaces/messageHandler.js.map +0 -1
- package/dist/interfaces/metrics/index.js.map +0 -1
- package/dist/interfaces/options.js +0 -3
- package/dist/interfaces/options.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/amqpConnection.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.js +0 -4
- package/dist/interfaces/providers/rabbitmq/amqpPublisher.js.map +0 -1
- package/dist/interfaces/providers/rabbitmq/index.js.map +0 -1
- package/dist/interfaces/queueConfig/configs.js.map +0 -1
- package/dist/interfaces/queueConfig/index.js +0 -18
- package/dist/interfaces/queueConfig/index.js.map +0 -1
- package/dist/interfaces/queueContext.js +0 -3
- package/dist/interfaces/queueContext.js.map +0 -1
- package/dist/interfaces/queueStatus.js.map +0 -1
- package/dist/interfaces/services/eventMessageHandler.js +0 -3
- package/dist/interfaces/services/eventMessageHandler.js.map +0 -1
- package/dist/metrics/index.js.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/rabbitmq/amqpAsserter.js.map +0 -1
- package/dist/providers/rabbitmq/amqpConnection.js.map +0 -1
- package/dist/providers/rabbitmq/amqpListener.js.map +0 -1
- package/dist/providers/rabbitmq/amqpPublisher.js.map +0 -1
- package/dist/providers/rabbitmq/index.js.map +0 -1
- package/dist/services/communicator.js.map +0 -1
- package/dist/services/eventBus.js.map +0 -1
- package/dist/services/eventCommunicator.js.map +0 -1
- package/dist/services/eventMessageHandler.js.map +0 -1
- package/dist/services/eventMessageValidator.js.map +0 -1
- package/dist/services/externalCommunicator.js.map +0 -1
- package/dist/services/externalEventBus.js.map +0 -1
- package/dist/services/index.js.map +0 -1
- package/dist/services/metrics.js.map +0 -1
- package/dist/services/optionsBuilder.js.map +0 -1
- package/dist/services/queue.js.map +0 -1
- package/dist/services/scheduledTask.js.map +0 -1
- package/dist/services/task.js.map +0 -1
- package/dist/types/constants.d.ts +0 -8
- package/dist/types/index.d.ts +0 -4
- package/dist/types/interfaces/deps.d.ts +0 -26
- package/dist/types/interfaces/externalCommunicator.d.ts +0 -54
- package/dist/types/interfaces/index.d.ts +0 -99
- package/dist/types/interfaces/messageBrokerServiceConfig.d.ts +0 -79
- package/dist/types/interfaces/messageHandler.d.ts +0 -2
- package/dist/types/interfaces/metrics/index.d.ts +0 -20
- package/dist/types/interfaces/options.d.ts +0 -49
- package/dist/types/interfaces/providers/rabbitmq/amqpConnection.d.ts +0 -29
- package/dist/types/interfaces/providers/rabbitmq/amqpPublisher.d.ts +0 -16
- package/dist/types/interfaces/providers/rabbitmq/index.d.ts +0 -114
- package/dist/types/interfaces/queueConfig/configs.d.ts +0 -47
- package/dist/types/interfaces/queueConfig/index.d.ts +0 -1
- package/dist/types/interfaces/queueContext.d.ts +0 -4
- package/dist/types/interfaces/queueStatus.d.ts +0 -11
- package/dist/types/interfaces/services/eventMessageHandler.d.ts +0 -5
- package/dist/types/metrics/index.d.ts +0 -3
- package/dist/types/providers/index.d.ts +0 -5
- package/dist/types/providers/rabbitmq/amqpAsserter.d.ts +0 -49
- package/dist/types/providers/rabbitmq/amqpConnection.d.ts +0 -20
- package/dist/types/providers/rabbitmq/amqpListener.d.ts +0 -42
- package/dist/types/providers/rabbitmq/amqpPublisher.d.ts +0 -34
- package/dist/types/providers/rabbitmq/index.d.ts +0 -52
- package/dist/types/services/communicator.d.ts +0 -57
- package/dist/types/services/eventBus.d.ts +0 -20
- package/dist/types/services/eventCommunicator.d.ts +0 -15
- package/dist/types/services/eventMessageHandler.d.ts +0 -19
- package/dist/types/services/eventMessageValidator.d.ts +0 -9
- package/dist/types/services/externalCommunicator.d.ts +0 -110
- package/dist/types/services/externalEventBus.d.ts +0 -33
- package/dist/types/services/index.d.ts +0 -9
- package/dist/types/services/metrics.d.ts +0 -11
- package/dist/types/services/optionsBuilder.d.ts +0 -10
- package/dist/types/services/queue.d.ts +0 -23
- package/dist/types/services/scheduledTask.d.ts +0 -25
- package/dist/types/services/task.d.ts +0 -28
- package/dist/types/utils.d.ts +0 -3
- 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";
|
package/dist/services/index.js
CHANGED
|
@@ -1,26 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 };
|
package/dist/services/metrics.js
CHANGED
|
@@ -1,49 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
6
|
-
|
|
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 };
|
package/dist/services/queue.js
CHANGED
|
@@ -1,93 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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 };
|