@makebelieve21213-packages/rabbitmq-client 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +461 -0
- package/dist/__tests__/__mocks__/logger.d.ts +10 -0
- package/dist/__tests__/__mocks__/logger.d.ts.map +1 -0
- package/dist/__tests__/__mocks__/logger.js +11 -0
- package/dist/__tests__/__mocks__/logger.js.map +1 -0
- package/dist/__tests__/__mocks__/redis-client.d.ts +9 -0
- package/dist/__tests__/__mocks__/redis-client.d.ts.map +1 -0
- package/dist/__tests__/__mocks__/redis-client.js +10 -0
- package/dist/__tests__/__mocks__/redis-client.js.map +1 -0
- package/dist/__tests__/connect-rabbitmq-receiver.spec.d.ts +2 -0
- package/dist/__tests__/connect-rabbitmq-receiver.spec.d.ts.map +1 -0
- package/dist/__tests__/connect-rabbitmq-receiver.spec.js +206 -0
- package/dist/__tests__/connect-rabbitmq-receiver.spec.js.map +1 -0
- package/dist/__tests__/connect-rabbitmq-receivers.spec.d.ts +2 -0
- package/dist/__tests__/connect-rabbitmq-receivers.spec.d.ts.map +1 -0
- package/dist/__tests__/connect-rabbitmq-receivers.spec.js +139 -0
- package/dist/__tests__/connect-rabbitmq-receivers.spec.js.map +1 -0
- package/dist/__tests__/index.spec.d.ts +2 -0
- package/dist/__tests__/index.spec.d.ts.map +1 -0
- package/dist/__tests__/index.spec.js +206 -0
- package/dist/__tests__/index.spec.js.map +1 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/setup.js +15 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/test-types.d.ts +52 -0
- package/dist/__tests__/test-types.d.ts.map +1 -0
- package/dist/__tests__/test-types.js +2 -0
- package/dist/__tests__/test-types.js.map +1 -0
- package/dist/config/__tests__/factories.spec.d.ts +2 -0
- package/dist/config/__tests__/factories.spec.d.ts.map +1 -0
- package/dist/config/__tests__/factories.spec.js +168 -0
- package/dist/config/__tests__/factories.spec.js.map +1 -0
- package/dist/config/factories.d.ts +23 -0
- package/dist/config/factories.d.ts.map +1 -0
- package/dist/config/factories.js +123 -0
- package/dist/config/factories.js.map +1 -0
- package/dist/connect-rabbitmq-receiver.d.ts +8 -0
- package/dist/connect-rabbitmq-receiver.d.ts.map +1 -0
- package/dist/connect-rabbitmq-receiver.js +49 -0
- package/dist/connect-rabbitmq-receiver.js.map +1 -0
- package/dist/connect-rabbitmq-receivers.d.ts +8 -0
- package/dist/connect-rabbitmq-receivers.d.ts.map +1 -0
- package/dist/connect-rabbitmq-receivers.js +18 -0
- package/dist/connect-rabbitmq-receivers.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.d.ts +2 -0
- package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.d.ts.map +1 -0
- package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.js +647 -0
- package/dist/interceptors/__tests__/rabbitmq.interceptor.spec.js.map +1 -0
- package/dist/interceptors/rabbitmq.interceptor.d.ts +18 -0
- package/dist/interceptors/rabbitmq.interceptor.d.ts.map +1 -0
- package/dist/interceptors/rabbitmq.interceptor.js +107 -0
- package/dist/interceptors/rabbitmq.interceptor.js.map +1 -0
- package/dist/main/__tests__/rabbitmq.module.spec.d.ts +2 -0
- package/dist/main/__tests__/rabbitmq.module.spec.d.ts.map +1 -0
- package/dist/main/__tests__/rabbitmq.module.spec.js +266 -0
- package/dist/main/__tests__/rabbitmq.module.spec.js.map +1 -0
- package/dist/main/__tests__/rabbitmq.service.spec.d.ts +2 -0
- package/dist/main/__tests__/rabbitmq.service.spec.d.ts.map +1 -0
- package/dist/main/__tests__/rabbitmq.service.spec.js +349 -0
- package/dist/main/__tests__/rabbitmq.service.spec.js.map +1 -0
- package/dist/main/rabbitmq.module.d.ts +10 -0
- package/dist/main/rabbitmq.module.d.ts.map +1 -0
- package/dist/main/rabbitmq.module.js +51 -0
- package/dist/main/rabbitmq.module.js.map +1 -0
- package/dist/main/rabbitmq.service.d.ts +26 -0
- package/dist/main/rabbitmq.service.d.ts.map +1 -0
- package/dist/main/rabbitmq.service.js +100 -0
- package/dist/main/rabbitmq.service.js.map +1 -0
- package/dist/types/base.config.d.ts +15 -0
- package/dist/types/base.config.d.ts.map +1 -0
- package/dist/types/base.config.js +2 -0
- package/dist/types/base.config.js.map +1 -0
- package/dist/types/idempotent-message.d.ts +6 -0
- package/dist/types/idempotent-message.d.ts.map +1 -0
- package/dist/types/idempotent-message.js +2 -0
- package/dist/types/idempotent-message.js.map +1 -0
- package/dist/types/message-with-correlation-id.d.ts +10 -0
- package/dist/types/message-with-correlation-id.d.ts.map +1 -0
- package/dist/types/message-with-correlation-id.js +2 -0
- package/dist/types/message-with-correlation-id.js.map +1 -0
- package/dist/types/rabbitmq-config-dlx.d.ts +4 -0
- package/dist/types/rabbitmq-config-dlx.d.ts.map +1 -0
- package/dist/types/rabbitmq-config-dlx.js +2 -0
- package/dist/types/rabbitmq-config-dlx.js.map +1 -0
- package/dist/types/rabbitmq-config-receiver.d.ts +15 -0
- package/dist/types/rabbitmq-config-receiver.d.ts.map +1 -0
- package/dist/types/rabbitmq-config-receiver.js +2 -0
- package/dist/types/rabbitmq-config-receiver.js.map +1 -0
- package/dist/types/rabbitmq-config-retry.d.ts +13 -0
- package/dist/types/rabbitmq-config-retry.d.ts.map +1 -0
- package/dist/types/rabbitmq-config-retry.js +2 -0
- package/dist/types/rabbitmq-config-retry.js.map +1 -0
- package/dist/types/rabbitmq-config-sender.d.ts +14 -0
- package/dist/types/rabbitmq-config-sender.d.ts.map +1 -0
- package/dist/types/rabbitmq-config-sender.js +2 -0
- package/dist/types/rabbitmq-config-sender.js.map +1 -0
- package/dist/types/rabbitmq-module-options.d.ts +17 -0
- package/dist/types/rabbitmq-module-options.d.ts.map +1 -0
- package/dist/types/rabbitmq-module-options.js +2 -0
- package/dist/types/rabbitmq-module-options.js.map +1 -0
- package/dist/types/rabbitmq-receiver-options.d.ts +18 -0
- package/dist/types/rabbitmq-receiver-options.d.ts.map +1 -0
- package/dist/types/rabbitmq-receiver-options.js +2 -0
- package/dist/types/rabbitmq-receiver-options.js.map +1 -0
- package/dist/types/rabbitmq-receiver-subscription.d.ts +19 -0
- package/dist/types/rabbitmq-receiver-subscription.d.ts.map +1 -0
- package/dist/types/rabbitmq-receiver-subscription.js +2 -0
- package/dist/types/rabbitmq-receiver-subscription.js.map +1 -0
- package/dist/types/rabbitmq-receivers-config.d.ts +14 -0
- package/dist/types/rabbitmq-receivers-config.d.ts.map +1 -0
- package/dist/types/rabbitmq-receivers-config.js +2 -0
- package/dist/types/rabbitmq-receivers-config.js.map +1 -0
- package/dist/types/rabbitmq-sender-options.d.ts +10 -0
- package/dist/types/rabbitmq-sender-options.d.ts.map +1 -0
- package/dist/types/rabbitmq-sender-options.js +2 -0
- package/dist/types/rabbitmq-sender-options.js.map +1 -0
- package/dist/types/routing-keys.d.ts +24 -0
- package/dist/types/routing-keys.d.ts.map +1 -0
- package/dist/types/routing-keys.js +29 -0
- package/dist/types/routing-keys.js.map +1 -0
- package/dist/utils/__tests__/injections.spec.d.ts +2 -0
- package/dist/utils/__tests__/injections.spec.d.ts.map +1 -0
- package/dist/utils/__tests__/injections.spec.js +174 -0
- package/dist/utils/__tests__/injections.spec.js.map +1 -0
- package/dist/utils/injections.d.ts +2 -0
- package/dist/utils/injections.d.ts.map +1 -0
- package/dist/utils/injections.js +2 -0
- package/dist/utils/injections.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Transport } from "@nestjs/microservices/enums/transport.enum.js";
|
|
2
|
+
export type TestRabbitMQConfigReciever = {
|
|
3
|
+
transport: Transport.RMQ;
|
|
4
|
+
options: {
|
|
5
|
+
urls: string[];
|
|
6
|
+
queue: string;
|
|
7
|
+
queueOptions: {
|
|
8
|
+
durable: boolean;
|
|
9
|
+
arguments: {
|
|
10
|
+
"x-dead-letter-exchange": string;
|
|
11
|
+
"x-dead-letter-routing-key": string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
exchange: string;
|
|
15
|
+
exchangeType: string;
|
|
16
|
+
wildcards: boolean;
|
|
17
|
+
prefetchCount: number;
|
|
18
|
+
noAck: boolean;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type TestRabbitMQConfigRetry = {
|
|
22
|
+
transport: Transport.RMQ;
|
|
23
|
+
options: {
|
|
24
|
+
urls: string[];
|
|
25
|
+
queue: string;
|
|
26
|
+
queueOptions: {
|
|
27
|
+
durable: boolean;
|
|
28
|
+
arguments: {
|
|
29
|
+
"x-dead-letter-exchange": string;
|
|
30
|
+
"x-dead-letter-routing-key": string;
|
|
31
|
+
"x-message-ttl": number;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exchange: string;
|
|
35
|
+
exchangeType: string;
|
|
36
|
+
wildcards: boolean;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export type TestRabbitMQConfigDLX = {
|
|
40
|
+
transport: Transport.RMQ;
|
|
41
|
+
options: {
|
|
42
|
+
urls: string[];
|
|
43
|
+
queue: string;
|
|
44
|
+
queueOptions: {
|
|
45
|
+
durable: boolean;
|
|
46
|
+
};
|
|
47
|
+
exchange: string;
|
|
48
|
+
exchangeType: string;
|
|
49
|
+
wildcards: boolean;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=test-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-types.d.ts","sourceRoot":"","sources":["../../src/__tests__/test-types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4CAA4C,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG;IACxC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;IACzB,OAAO,EAAE;QACR,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,EAAE;gBACV,wBAAwB,EAAE,MAAM,CAAC;gBACjC,2BAA2B,EAAE,MAAM,CAAC;aACpC,CAAC;SACF,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,OAAO,CAAC;KACf,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;IACzB,OAAO,EAAE;QACR,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,EAAE;gBACV,wBAAwB,EAAE,MAAM,CAAC;gBACjC,2BAA2B,EAAE,MAAM,CAAC;gBACpC,eAAe,EAAE,MAAM,CAAC;aACxB,CAAC;SACF,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;KACnB,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;IACzB,OAAO,EAAE;QACR,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE;YACb,OAAO,EAAE,OAAO,CAAC;SACjB,CAAC;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;KACnB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-types.js","sourceRoot":"","sources":["../../src/__tests__/test-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.spec.d.ts","sourceRoot":"","sources":["../../../src/config/__tests__/factories.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Transport } from "@nestjs/microservices/enums/transport.enum.js";
|
|
2
|
+
import { createSenderConfig, createReceiverConfig, createRetryConfig, createDLXConfig, } from "../../config/factories.js";
|
|
3
|
+
import { ROUTING_KEYS } from "../../types/routing-keys.js";
|
|
4
|
+
describe("RabbitMQ Config Factories", () => {
|
|
5
|
+
const baseSenderOptions = {
|
|
6
|
+
url: "amqp://localhost:5672",
|
|
7
|
+
exchange: "events_exchange",
|
|
8
|
+
exchangeType: "topic",
|
|
9
|
+
};
|
|
10
|
+
const baseReceiverOptions = {
|
|
11
|
+
url: "amqp://localhost:5672",
|
|
12
|
+
exchange: "events_exchange",
|
|
13
|
+
exchangeType: "topic",
|
|
14
|
+
queue: "q.analytics",
|
|
15
|
+
pattern: "analytics.*",
|
|
16
|
+
};
|
|
17
|
+
describe("createSenderConfig", () => {
|
|
18
|
+
it("должен создать конфигурацию sender с правильными параметрами", () => {
|
|
19
|
+
const config = createSenderConfig(baseSenderOptions);
|
|
20
|
+
expect(config.transport).toBe(Transport.RMQ);
|
|
21
|
+
expect(config.options.urls).toEqual([baseSenderOptions.url]);
|
|
22
|
+
expect(config.options.exchange).toBe(baseSenderOptions.exchange);
|
|
23
|
+
expect(config.options.exchangeType).toBe(baseSenderOptions.exchangeType);
|
|
24
|
+
expect(config.options.wildcards).toBe(true);
|
|
25
|
+
expect(config.options.durable).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
it("должен создать конфигурацию sender со всеми routing keys", () => {
|
|
28
|
+
const config = createSenderConfig(baseSenderOptions);
|
|
29
|
+
expect(config.routingKeys).toBeDefined();
|
|
30
|
+
expect(config.routingKeys[ROUTING_KEYS.TOKENS_FETCH_ALL]).toBe(ROUTING_KEYS.TOKENS_FETCH_ALL);
|
|
31
|
+
expect(config.routingKeys[ROUTING_KEYS.ANALYTICS_GLOBAL]).toBeDefined();
|
|
32
|
+
});
|
|
33
|
+
it("должен использовать дефолтные replyQueueOptions если не указаны", () => {
|
|
34
|
+
const config = createSenderConfig(baseSenderOptions);
|
|
35
|
+
expect(config.options.replyQueueOptions).toBeDefined();
|
|
36
|
+
expect(config.options.replyQueueOptions?.durable).toBe(false);
|
|
37
|
+
expect(config.options.replyQueueOptions?.autoDelete).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it("должен использовать кастомные replyQueueOptions если указаны", () => {
|
|
40
|
+
const options = {
|
|
41
|
+
...baseSenderOptions,
|
|
42
|
+
replyQueueOptions: {
|
|
43
|
+
durable: true,
|
|
44
|
+
autoDelete: false,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
const config = createSenderConfig(options);
|
|
48
|
+
expect(config.options.replyQueueOptions?.durable).toBe(true);
|
|
49
|
+
expect(config.options.replyQueueOptions?.autoDelete).toBe(false);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("createReceiverConfig", () => {
|
|
53
|
+
it("должен создать конфигурацию receiver с правильными параметрами", () => {
|
|
54
|
+
const config = createReceiverConfig(baseReceiverOptions);
|
|
55
|
+
expect(config.transport).toBe(Transport.RMQ);
|
|
56
|
+
expect(config.options.urls).toEqual([baseReceiverOptions.url]);
|
|
57
|
+
expect(config.options.queue).toBe(baseReceiverOptions.queue);
|
|
58
|
+
expect(config.options.exchange).toBe(baseReceiverOptions.exchange);
|
|
59
|
+
expect(config.options.exchangeType).toBe(baseReceiverOptions.exchangeType);
|
|
60
|
+
expect(config.options.pattern).toBe(baseReceiverOptions.pattern);
|
|
61
|
+
expect(config.options.wildcards).toBe(true);
|
|
62
|
+
expect(config.options.prefetchCount).toBe(10);
|
|
63
|
+
expect(config.options.noAck).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
it("должен использовать дефолтный prefetchCount если не указан", () => {
|
|
66
|
+
const config = createReceiverConfig(baseReceiverOptions);
|
|
67
|
+
expect(config.options.prefetchCount).toBe(10);
|
|
68
|
+
});
|
|
69
|
+
it("должен использовать кастомный prefetchCount если указан", () => {
|
|
70
|
+
const options = {
|
|
71
|
+
...baseReceiverOptions,
|
|
72
|
+
prefetchCount: 20,
|
|
73
|
+
};
|
|
74
|
+
const config = createReceiverConfig(options);
|
|
75
|
+
expect(config.options.prefetchCount).toBe(20);
|
|
76
|
+
});
|
|
77
|
+
it("должен использовать кастомный noAck если указан", () => {
|
|
78
|
+
const options = {
|
|
79
|
+
...baseReceiverOptions,
|
|
80
|
+
noAck: true,
|
|
81
|
+
};
|
|
82
|
+
const config = createReceiverConfig(options);
|
|
83
|
+
expect(config.options.noAck).toBe(true);
|
|
84
|
+
});
|
|
85
|
+
it("должен создать DLX настройки для retry очереди", () => {
|
|
86
|
+
const config = createReceiverConfig(baseReceiverOptions);
|
|
87
|
+
expect(config.options.queueOptions.arguments["x-dead-letter-exchange"]).toBe(`${baseReceiverOptions.exchange}.retry`);
|
|
88
|
+
expect(config.options.queueOptions.arguments["x-dead-letter-routing-key"]).toBe(baseReceiverOptions.pattern);
|
|
89
|
+
});
|
|
90
|
+
it("должен использовать кастомный retryExchange если указан", () => {
|
|
91
|
+
const options = {
|
|
92
|
+
...baseReceiverOptions,
|
|
93
|
+
retryExchange: "custom.retry.exchange",
|
|
94
|
+
};
|
|
95
|
+
const config = createReceiverConfig(options);
|
|
96
|
+
expect(config.options.queueOptions.arguments["x-dead-letter-exchange"]).toBe("custom.retry.exchange");
|
|
97
|
+
});
|
|
98
|
+
it("должен использовать переданный pattern вместо pattern из options", () => {
|
|
99
|
+
const customPattern = "custom.pattern.*";
|
|
100
|
+
const config = createReceiverConfig(baseReceiverOptions, customPattern);
|
|
101
|
+
expect(config.options.pattern).toBe(customPattern);
|
|
102
|
+
expect(config.options.queueOptions.arguments["x-dead-letter-routing-key"]).toBe(customPattern);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe("createRetryConfig", () => {
|
|
106
|
+
it("должен создать конфигурацию retry с правильными параметрами", () => {
|
|
107
|
+
const config = createRetryConfig(baseReceiverOptions);
|
|
108
|
+
expect(config.transport).toBe(Transport.RMQ);
|
|
109
|
+
expect(config.options.urls).toEqual([baseReceiverOptions.url]);
|
|
110
|
+
expect(config.options.queue).toBe(`${baseReceiverOptions.queue}.retry`);
|
|
111
|
+
expect(config.options.exchange).toBe(`${baseReceiverOptions.exchange}.retry`);
|
|
112
|
+
expect(config.options.exchangeType).toBe(baseReceiverOptions.exchangeType);
|
|
113
|
+
});
|
|
114
|
+
it("должен использовать дефолтный TTL если не указан", () => {
|
|
115
|
+
const config = createRetryConfig(baseReceiverOptions);
|
|
116
|
+
expect(config.options.queueOptions.arguments["x-message-ttl"]).toBe(5000);
|
|
117
|
+
});
|
|
118
|
+
it("должен использовать кастомный TTL если указан", () => {
|
|
119
|
+
const options = {
|
|
120
|
+
...baseReceiverOptions,
|
|
121
|
+
retryTtl: 10000,
|
|
122
|
+
};
|
|
123
|
+
const config = createRetryConfig(options);
|
|
124
|
+
expect(config.options.queueOptions.arguments["x-message-ttl"]).toBe(10000);
|
|
125
|
+
});
|
|
126
|
+
it("должен создать DLX настройки для возврата в основную очередь", () => {
|
|
127
|
+
const config = createRetryConfig(baseReceiverOptions);
|
|
128
|
+
expect(config.options.queueOptions.arguments["x-dead-letter-exchange"]).toBe(baseReceiverOptions.exchange);
|
|
129
|
+
expect(config.options.queueOptions.arguments["x-dead-letter-routing-key"]).toBe(baseReceiverOptions.pattern);
|
|
130
|
+
});
|
|
131
|
+
it("должен использовать кастомные параметры retry если указаны", () => {
|
|
132
|
+
const options = {
|
|
133
|
+
...baseReceiverOptions,
|
|
134
|
+
retryQueue: "custom.retry.queue",
|
|
135
|
+
retryExchange: "custom.retry.exchange",
|
|
136
|
+
retryExchangeType: "direct",
|
|
137
|
+
};
|
|
138
|
+
const config = createRetryConfig(options);
|
|
139
|
+
expect(config.options.queue).toBe("custom.retry.queue");
|
|
140
|
+
expect(config.options.exchange).toBe("custom.retry.exchange");
|
|
141
|
+
expect(config.options.exchangeType).toBe("direct");
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
describe("createDLXConfig", () => {
|
|
145
|
+
it("должен создать конфигурацию DLX с дефолтными параметрами", () => {
|
|
146
|
+
const config = createDLXConfig(baseReceiverOptions);
|
|
147
|
+
expect(config.transport).toBe(Transport.RMQ);
|
|
148
|
+
expect(config.options.urls).toEqual([baseReceiverOptions.url]);
|
|
149
|
+
expect(config.options.queue).toBe("global.dlx");
|
|
150
|
+
expect(config.options.exchange).toBe("events_exchange.dlx");
|
|
151
|
+
expect(config.options.exchangeType).toBe(baseReceiverOptions.exchangeType);
|
|
152
|
+
expect(config.options.wildcards).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
it("должен использовать кастомные параметры DLX если указаны", () => {
|
|
155
|
+
const options = {
|
|
156
|
+
...baseReceiverOptions,
|
|
157
|
+
dlxQueue: "custom.dlx.queue",
|
|
158
|
+
dlxExchange: "custom.dlx.exchange",
|
|
159
|
+
dlxExchangeType: "fanout",
|
|
160
|
+
};
|
|
161
|
+
const config = createDLXConfig(options);
|
|
162
|
+
expect(config.options.queue).toBe("custom.dlx.queue");
|
|
163
|
+
expect(config.options.exchange).toBe("custom.dlx.exchange");
|
|
164
|
+
expect(config.options.exchangeType).toBe("fanout");
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
//# sourceMappingURL=factories.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.spec.js","sourceRoot":"","sources":["../../../src/config/__tests__/factories.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type RabbitMQConfigDLX from "../types/rabbitmq-config-dlx.js";
|
|
2
|
+
import type RabbitMQConfigReciever from "../types/rabbitmq-config-receiver.js";
|
|
3
|
+
import type RabbitMQConfigRetry from "../types/rabbitmq-config-retry.js";
|
|
4
|
+
import type RabbitMQConfigSender from "../types/rabbitmq-config-sender.js";
|
|
5
|
+
import type RabbitMQReceiverOptions from "../types/rabbitmq-receiver-options.js";
|
|
6
|
+
import type RabbitMQSenderOptions from "../types/rabbitmq-sender-options.js";
|
|
7
|
+
export declare function createSenderConfig(options: RabbitMQSenderOptions): RabbitMQConfigSender;
|
|
8
|
+
/**
|
|
9
|
+
* Создает конфигурацию receiver с DLX настройками
|
|
10
|
+
* Использует единую глобальную DLX очередь для всех очередей
|
|
11
|
+
*/
|
|
12
|
+
export declare function createReceiverConfig(options: RabbitMQReceiverOptions, pattern?: string): RabbitMQConfigReciever;
|
|
13
|
+
/**
|
|
14
|
+
* Создает конфигурацию retry с TTL и DLX настройками
|
|
15
|
+
* Retry очередь возвращает сообщения обратно в основную очередь после TTL
|
|
16
|
+
*/
|
|
17
|
+
export declare function createRetryConfig(options: RabbitMQReceiverOptions): RabbitMQConfigRetry;
|
|
18
|
+
/**
|
|
19
|
+
* Создает конфигурацию единой глобальной DLX очереди для всех очередей
|
|
20
|
+
* Все очереди используют одну и ту же DLX очередь для критических ошибок
|
|
21
|
+
*/
|
|
22
|
+
export declare function createDLXConfig(options: RabbitMQReceiverOptions): RabbitMQConfigDLX;
|
|
23
|
+
//# sourceMappingURL=factories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../src/config/factories.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,sBAAsB,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,mBAAmB,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,oBAAoB,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,uBAAuB,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,qBAAqB,MAAM,mCAAmC,CAAC;AAG3E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA0CvF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE,MAAM,GACd,sBAAsB,CAyBxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,mBAAmB,CAwBvF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,iBAAiB,CAmBnF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Transport } from "@nestjs/microservices/enums/transport.enum.js";
|
|
2
|
+
import { ROUTING_KEYS } from "../types/routing-keys.js";
|
|
3
|
+
// Создает конфигурацию sender с routingKeys
|
|
4
|
+
export function createSenderConfig(options) {
|
|
5
|
+
return {
|
|
6
|
+
transport: Transport.RMQ,
|
|
7
|
+
options: {
|
|
8
|
+
urls: [options.url],
|
|
9
|
+
exchange: options.exchange,
|
|
10
|
+
exchangeType: options.exchangeType,
|
|
11
|
+
wildcards: true,
|
|
12
|
+
durable: true,
|
|
13
|
+
replyQueueOptions: {
|
|
14
|
+
durable: options.replyQueueOptions?.durable ?? false,
|
|
15
|
+
autoDelete: options.replyQueueOptions?.autoDelete ?? true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
routingKeys: {
|
|
19
|
+
[ROUTING_KEYS.TOKENS_FETCH_ALL]: ROUTING_KEYS.TOKENS_FETCH_ALL,
|
|
20
|
+
[ROUTING_KEYS.TOKENS_FETCH_DETAILS_ETHEREUM]: ROUTING_KEYS.TOKENS_FETCH_DETAILS_ETHEREUM,
|
|
21
|
+
[ROUTING_KEYS.TOKENS_FETCH_DETAILS_NFT]: ROUTING_KEYS.TOKENS_FETCH_DETAILS_NFT,
|
|
22
|
+
[ROUTING_KEYS.TOKENS_DEPLOY_ETHEREUM]: ROUTING_KEYS.TOKENS_DEPLOY_ETHEREUM,
|
|
23
|
+
[ROUTING_KEYS.TOKENS_DEPLOY_NFT]: ROUTING_KEYS.TOKENS_DEPLOY_NFT,
|
|
24
|
+
[ROUTING_KEYS.ANALYTICS_GLOBAL]: ROUTING_KEYS.ANALYTICS_GLOBAL,
|
|
25
|
+
[ROUTING_KEYS.ANALYTICS_TOTAL_MARKET_CHART]: ROUTING_KEYS.ANALYTICS_TOTAL_MARKET_CHART,
|
|
26
|
+
[ROUTING_KEYS.ANALYTICS_MARKET_CHART]: ROUTING_KEYS.ANALYTICS_MARKET_CHART,
|
|
27
|
+
[ROUTING_KEYS.ANALYTICS_DOMINANCE_CHART]: ROUTING_KEYS.ANALYTICS_DOMINANCE_CHART,
|
|
28
|
+
[ROUTING_KEYS.ANALYTICS_VOLUME_CHART]: ROUTING_KEYS.ANALYTICS_VOLUME_CHART,
|
|
29
|
+
[ROUTING_KEYS.ANALYTICS_TOP_VOLUME_LEADERS]: ROUTING_KEYS.ANALYTICS_TOP_VOLUME_LEADERS,
|
|
30
|
+
[ROUTING_KEYS.ANALYTICS_TRENDING]: ROUTING_KEYS.ANALYTICS_TRENDING,
|
|
31
|
+
[ROUTING_KEYS.ANALYTICS_COINS_TABLE]: ROUTING_KEYS.ANALYTICS_COINS_TABLE,
|
|
32
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_GLOBAL]: ROUTING_KEYS.ANALYTICS_UPDATE_GLOBAL,
|
|
33
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_TOTAL_MARKET_CHART]: ROUTING_KEYS.ANALYTICS_UPDATE_TOTAL_MARKET_CHART,
|
|
34
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_MARKET_CHART]: ROUTING_KEYS.ANALYTICS_UPDATE_MARKET_CHART,
|
|
35
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_DOMINANCE_CHART]: ROUTING_KEYS.ANALYTICS_UPDATE_DOMINANCE_CHART,
|
|
36
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_VOLUME_CHART]: ROUTING_KEYS.ANALYTICS_UPDATE_VOLUME_CHART,
|
|
37
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_TOP_VOLUME_LEADERS]: ROUTING_KEYS.ANALYTICS_UPDATE_TOP_VOLUME_LEADERS,
|
|
38
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_TRENDING]: ROUTING_KEYS.ANALYTICS_UPDATE_TRENDING,
|
|
39
|
+
[ROUTING_KEYS.ANALYTICS_UPDATE_COINS_TABLE]: ROUTING_KEYS.ANALYTICS_UPDATE_COINS_TABLE,
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Создает конфигурацию receiver с DLX настройками
|
|
45
|
+
* Использует единую глобальную DLX очередь для всех очередей
|
|
46
|
+
*/
|
|
47
|
+
export function createReceiverConfig(options, pattern) {
|
|
48
|
+
const receiverPattern = pattern || options.pattern;
|
|
49
|
+
const retryExchange = options.retryExchange || `${options.exchange}.retry`;
|
|
50
|
+
return {
|
|
51
|
+
transport: Transport.RMQ,
|
|
52
|
+
options: {
|
|
53
|
+
urls: [options.url],
|
|
54
|
+
queue: options.queue,
|
|
55
|
+
queueOptions: {
|
|
56
|
+
durable: true,
|
|
57
|
+
arguments: {
|
|
58
|
+
"x-dead-letter-exchange": retryExchange,
|
|
59
|
+
// Используем паттерн для DLX routing key
|
|
60
|
+
"x-dead-letter-routing-key": receiverPattern,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
exchange: options.exchange,
|
|
64
|
+
exchangeType: options.exchangeType,
|
|
65
|
+
wildcards: true,
|
|
66
|
+
pattern: receiverPattern,
|
|
67
|
+
prefetchCount: options.prefetchCount || 10,
|
|
68
|
+
noAck: options.noAck ?? false,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Создает конфигурацию retry с TTL и DLX настройками
|
|
74
|
+
* Retry очередь возвращает сообщения обратно в основную очередь после TTL
|
|
75
|
+
*/
|
|
76
|
+
export function createRetryConfig(options) {
|
|
77
|
+
const retryQueue = options.retryQueue || `${options.queue}.retry`;
|
|
78
|
+
const retryExchange = options.retryExchange || `${options.exchange}.retry`;
|
|
79
|
+
const retryExchangeType = options.retryExchangeType || options.exchangeType;
|
|
80
|
+
const retryTtl = options.retryTtl || 5000;
|
|
81
|
+
return {
|
|
82
|
+
transport: Transport.RMQ,
|
|
83
|
+
options: {
|
|
84
|
+
urls: [options.url],
|
|
85
|
+
queue: retryQueue,
|
|
86
|
+
queueOptions: {
|
|
87
|
+
durable: true,
|
|
88
|
+
arguments: {
|
|
89
|
+
"x-dead-letter-exchange": options.exchange,
|
|
90
|
+
"x-dead-letter-routing-key": options.pattern,
|
|
91
|
+
"x-message-ttl": retryTtl,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
exchange: retryExchange,
|
|
95
|
+
exchangeType: retryExchangeType,
|
|
96
|
+
wildcards: true,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Создает конфигурацию единой глобальной DLX очереди для всех очередей
|
|
102
|
+
* Все очереди используют одну и ту же DLX очередь для критических ошибок
|
|
103
|
+
*/
|
|
104
|
+
export function createDLXConfig(options) {
|
|
105
|
+
// Используем единую глобальную DLX очередь для всех очередей
|
|
106
|
+
const dlxQueue = options.dlxQueue || "global.dlx";
|
|
107
|
+
const dlxExchange = options.dlxExchange || "events_exchange.dlx";
|
|
108
|
+
const dlxExchangeType = options.dlxExchangeType || options.exchangeType;
|
|
109
|
+
return {
|
|
110
|
+
transport: Transport.RMQ,
|
|
111
|
+
options: {
|
|
112
|
+
urls: [options.url],
|
|
113
|
+
queue: dlxQueue,
|
|
114
|
+
queueOptions: {
|
|
115
|
+
durable: true,
|
|
116
|
+
},
|
|
117
|
+
exchange: dlxExchange,
|
|
118
|
+
exchangeType: dlxExchangeType,
|
|
119
|
+
wildcards: true,
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=factories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factories.js","sourceRoot":"","sources":["../../src/config/factories.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { INestApplication } from "@nestjs/common";
|
|
2
|
+
import type RabbitMQReceiverOptions from "./types/rabbitmq-receiver-options.js";
|
|
3
|
+
/**
|
|
4
|
+
* Подключает RabbitMQ‑микросервис на принятие сообщений из указанной очереди
|
|
5
|
+
* Создает receiver, retry и DLX конфигурации для обработки сообщений
|
|
6
|
+
*/
|
|
7
|
+
export default function connectRabbitMQReceiver(app: INestApplication, receiverOptions: RabbitMQReceiverOptions, skipGlobalSetup?: boolean): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=connect-rabbitmq-receiver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-rabbitmq-receiver.d.ts","sourceRoot":"","sources":["../src/connect-rabbitmq-receiver.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,uBAAuB,MAAM,qCAAqC,CAAC;AAE/E;;;GAGG;AACH,wBAA8B,uBAAuB,CACpD,GAAG,EAAE,gBAAgB,EACrB,eAAe,EAAE,uBAAuB,EACxC,eAAe,UAAQ,GACrB,OAAO,CAAC,IAAI,CAAC,CAgDf"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { LoggerService } from "@makebelieve21213-packages/logger";
|
|
2
|
+
import { RedisClientService } from "@makebelieve21213-packages/redis-client";
|
|
3
|
+
import { createDLXConfig, createReceiverConfig, createRetryConfig } from "./config/factories.js";
|
|
4
|
+
import RabbitMQIdempotencyInterceptor from "./interceptors/rabbitmq.interceptor.js";
|
|
5
|
+
/**
|
|
6
|
+
* Подключает RabbitMQ‑микросервис на принятие сообщений из указанной очереди
|
|
7
|
+
* Создает receiver, retry и DLX конфигурации для обработки сообщений
|
|
8
|
+
*/
|
|
9
|
+
export default async function connectRabbitMQReceiver(app, receiverOptions, skipGlobalSetup = false) {
|
|
10
|
+
const logger = await app.resolve(LoggerService);
|
|
11
|
+
const redisService = await app.resolve(RedisClientService);
|
|
12
|
+
// Вычисляем конфигурации для receiver, retry и DLX
|
|
13
|
+
const rmqReceiverConfig = createReceiverConfig(receiverOptions);
|
|
14
|
+
const rmqRetryConfig = createRetryConfig(receiverOptions);
|
|
15
|
+
const rmqDLXConfig = createDLXConfig(receiverOptions);
|
|
16
|
+
/**
|
|
17
|
+
* Глобальный Interceptor для проверки идемпотентности сообщений
|
|
18
|
+
* Проверяет дубликаты через Redis по уникальному ID сообщения
|
|
19
|
+
*/
|
|
20
|
+
if (!skipGlobalSetup) {
|
|
21
|
+
app.useGlobalInterceptors(new RabbitMQIdempotencyInterceptor(redisService, logger));
|
|
22
|
+
}
|
|
23
|
+
// Подключаем RabbitMQ‑микросервис на принятие сообщений из основной очереди
|
|
24
|
+
app.connectMicroservice({
|
|
25
|
+
transport: rmqReceiverConfig.transport,
|
|
26
|
+
options: rmqReceiverConfig.options,
|
|
27
|
+
});
|
|
28
|
+
// Подключаем retry очередь для повторной обработки сообщений
|
|
29
|
+
app.connectMicroservice({
|
|
30
|
+
transport: rmqRetryConfig.transport,
|
|
31
|
+
options: rmqRetryConfig.options,
|
|
32
|
+
});
|
|
33
|
+
// Подключаем единую DLX очередь для критических ошибок (создается только один раз)
|
|
34
|
+
if (!skipGlobalSetup) {
|
|
35
|
+
const existingMicroservices = app.getMicroservices();
|
|
36
|
+
const dlxAlreadyConnected = existingMicroservices.some((ms) => {
|
|
37
|
+
const options = ms.options;
|
|
38
|
+
return options?.queue === rmqDLXConfig.options.queue;
|
|
39
|
+
});
|
|
40
|
+
if (!dlxAlreadyConnected) {
|
|
41
|
+
app.connectMicroservice({
|
|
42
|
+
transport: rmqDLXConfig.transport,
|
|
43
|
+
options: rmqDLXConfig.options,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
logger.log(`RabbitMQ receiver connected [queue: ${receiverOptions.queue}, pattern: ${receiverOptions.pattern}, exchange: ${receiverOptions.exchange}, exchangeType: ${receiverOptions.exchangeType}]`);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=connect-rabbitmq-receiver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-rabbitmq-receiver.js","sourceRoot":"","sources":["../src/connect-rabbitmq-receiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,8BAA8B,MAAM,uCAAuC,CAAC;AAKnF;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,uBAAuB,CACpD,GAAqB,EACrB,eAAwC,EACxC,eAAe,GAAG,KAAK;IAEvB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAE3D,mDAAmD;IACnD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAEtD;;;OAGG;IACH,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,GAAG,CAAC,qBAAqB,CAAC,IAAI,8BAA8B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,4EAA4E;IAC5E,GAAG,CAAC,mBAAmB,CAAC;QACvB,SAAS,EAAE,iBAAiB,CAAC,SAAS;QACtC,OAAO,EAAE,iBAAiB,CAAC,OAAO;KAClC,CAAC,CAAC;IAEH,6DAA6D;IAC7D,GAAG,CAAC,mBAAmB,CAAC;QACvB,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,OAAO,EAAE,cAAc,CAAC,OAAO;KAC/B,CAAC,CAAC;IAEH,mFAAmF;IACnF,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,MAAM,qBAAqB,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACrD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7D,MAAM,OAAO,GAAI,EAAuC,CAAC,OAAO,CAAC;YACjE,OAAO,OAAO,EAAE,KAAK,KAAK,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1B,GAAG,CAAC,mBAAmB,CAAC;gBACvB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,OAAO,EAAE,YAAY,CAAC,OAAO;aAC7B,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,MAAM,CAAC,GAAG,CACT,uCAAuC,eAAe,CAAC,KAAK,cAAc,eAAe,CAAC,OAAO,eAAe,eAAe,CAAC,QAAQ,mBAAmB,eAAe,CAAC,YAAY,GAAG,CAC1L,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { INestApplication } from "@nestjs/common";
|
|
2
|
+
import type RabbitMQReceiverOptions from "./types/rabbitmq-receiver-options.js";
|
|
3
|
+
/**
|
|
4
|
+
* Подключает множественные подписки RabbitMQ
|
|
5
|
+
* Принимает массив готовых объектов RabbitMQReceiverOptions и вызывает connectRabbitMQReceiver для каждого
|
|
6
|
+
*/
|
|
7
|
+
export default function connectRabbitMQReceivers(app: INestApplication, receiverOptionsList: RabbitMQReceiverOptions[]): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=connect-rabbitmq-receivers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-rabbitmq-receivers.d.ts","sourceRoot":"","sources":["../src/connect-rabbitmq-receivers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,uBAAuB,MAAM,qCAAqC,CAAC;AAE/E;;;GAGG;AACH,wBAA8B,wBAAwB,CACrD,GAAG,EAAE,gBAAgB,EACrB,mBAAmB,EAAE,uBAAuB,EAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LoggerService } from "@makebelieve21213-packages/logger";
|
|
2
|
+
import connectRabbitMQReceiver from "./connect-rabbitmq-receiver.js";
|
|
3
|
+
/**
|
|
4
|
+
* Подключает множественные подписки RabbitMQ
|
|
5
|
+
* Принимает массив готовых объектов RabbitMQReceiverOptions и вызывает connectRabbitMQReceiver для каждого
|
|
6
|
+
*/
|
|
7
|
+
export default async function connectRabbitMQReceivers(app, receiverOptionsList) {
|
|
8
|
+
const logger = await app.resolve(LoggerService);
|
|
9
|
+
// Подключаем каждую подписку на сообщения
|
|
10
|
+
for (let i = 0; i < receiverOptionsList.length; i++) {
|
|
11
|
+
const receiverOptions = receiverOptionsList[i];
|
|
12
|
+
const isFirstSubscription = i === 0;
|
|
13
|
+
await connectRabbitMQReceiver(app, receiverOptions, !isFirstSubscription);
|
|
14
|
+
logger.log(`RabbitMQ subscription connected [queue: ${receiverOptions.queue}, pattern: ${receiverOptions.pattern}, exchange: ${receiverOptions.exchange}, exchangeType: ${receiverOptions.exchangeType}]`);
|
|
15
|
+
}
|
|
16
|
+
logger.log(`All RabbitMQ subscriptions connected [count: ${receiverOptionsList.length}]`);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=connect-rabbitmq-receivers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-rabbitmq-receivers.js","sourceRoot":"","sources":["../src/connect-rabbitmq-receivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,uBAAuB,MAAM,+BAA+B,CAAC;AAKpE;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,wBAAwB,CACrD,GAAqB,EACrB,mBAA8C;IAE9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhD,0CAA0C;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAE1E,MAAM,CAAC,GAAG,CACT,2CAA2C,eAAe,CAAC,KAAK,cAAc,eAAe,CAAC,OAAO,eAAe,eAAe,CAAC,QAAQ,mBAAmB,eAAe,CAAC,YAAY,GAAG,CAC9L,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,gDAAgD,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3F,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { default as RabbitMQModule } from "./main/rabbitmq.module.js";
|
|
2
|
+
export { default as RabbitMQService } from "./main/rabbitmq.service.js";
|
|
3
|
+
export { default as connectRabbitMQReceiver } from "./connect-rabbitmq-receiver.js";
|
|
4
|
+
export { default as connectRabbitMQReceivers } from "./connect-rabbitmq-receivers.js";
|
|
5
|
+
export { default as RabbitMQIdempotencyInterceptor } from "./interceptors/rabbitmq.interceptor.js";
|
|
6
|
+
export { createDLXConfig, createReceiverConfig, createRetryConfig } from "./config/factories.js";
|
|
7
|
+
export type { default as RabbitMQModuleOptions } from "./types/rabbitmq-module-options.js";
|
|
8
|
+
export type { default as RabbitMQSenderOptions } from "./types/rabbitmq-sender-options.js";
|
|
9
|
+
export type { default as RabbitMQReceiverOptions } from "./types/rabbitmq-receiver-options.js";
|
|
10
|
+
export type { default as RabbitMQReceiverSubscription } from "./types/rabbitmq-receiver-subscription.js";
|
|
11
|
+
export type { default as RabbitMQReceiversConfig } from "./types/rabbitmq-receivers-config.js";
|
|
12
|
+
export type { default as IdempotentMessage } from "./types/idempotent-message.js";
|
|
13
|
+
export { ROUTING_KEYS } from "./types/routing-keys.js";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChG,YAAY,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,YAAY,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,YAAY,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,YAAY,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxG,YAAY,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,YAAY,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default as RabbitMQModule } from "./main/rabbitmq.module.js";
|
|
2
|
+
export { default as RabbitMQService } from "./main/rabbitmq.service.js";
|
|
3
|
+
export { default as connectRabbitMQReceiver } from "./connect-rabbitmq-receiver.js";
|
|
4
|
+
export { default as connectRabbitMQReceivers } from "./connect-rabbitmq-receivers.js";
|
|
5
|
+
export { default as RabbitMQIdempotencyInterceptor } from "./interceptors/rabbitmq.interceptor.js";
|
|
6
|
+
export { createDLXConfig, createReceiverConfig, createRetryConfig } from "./config/factories.js";
|
|
7
|
+
export { ROUTING_KEYS } from "./types/routing-keys.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAOhG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rabbitmq.interceptor.spec.d.ts","sourceRoot":"","sources":["../../../src/interceptors/__tests__/rabbitmq.interceptor.spec.ts"],"names":[],"mappings":""}
|