@haku-sci/utils 1.4.9 → 1.5.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/README.md +17 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/microservice/microservice.service.d.ts +1 -4
- package/dist/microservice/microservice.service.js +13 -67
- package/dist/microservice/microservice.service.js.map +1 -1
- package/dist/rabbit-mq/constants.d.ts +2 -0
- package/dist/rabbit-mq/constants.js +6 -0
- package/dist/rabbit-mq/constants.js.map +1 -0
- package/dist/rabbit-mq/rabbit-mq.module.d.ts +2 -0
- package/dist/rabbit-mq/rabbit-mq.module.js +34 -0
- package/dist/rabbit-mq/rabbit-mq.module.js.map +1 -0
- package/dist/rabbit-mq/rabbit-mq.service.d.ts +22 -0
- package/dist/rabbit-mq/rabbit-mq.service.js +116 -0
- package/dist/rabbit-mq/rabbit-mq.service.js.map +1 -0
- package/dist/rabbit-mq/rabbit-mq.service.spec.d.ts +1 -0
- package/dist/rabbit-mq/rabbit-mq.service.spec.js +17 -0
- package/dist/rabbit-mq/rabbit-mq.service.spec.js.map +1 -0
- package/dist/rabbit-mq/utils.d.ts +1 -0
- package/dist/rabbit-mq/utils.js +5 -0
- package/dist/rabbit-mq/utils.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +29 -0
- package/dist/utils.js.map +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -29,11 +29,26 @@ the start_services.bat method allows to run all required services from docker:
|
|
|
29
29
|
|
|
30
30
|
if the service uses a database PostgreSQL, and this database doesn't exist in the system, it will be created automatically (require the librarie pg)
|
|
31
31
|
|
|
32
|
+
## RabbitMQ
|
|
33
|
+
|
|
34
|
+
Using RabbitMQService, lets implement dispatch of messages with an option to wait that all messages have been processed. A watchdog of 10 seconds raise an error Gateway timeout
|
|
35
|
+
If the option is activated, a queue ack_queue_\<name of the project\> is created
|
|
36
|
+
|
|
37
|
+
The decorator HakuSciSubscriber allows to listen for a specific keyword.
|
|
38
|
+
Each microservice which register with this decorator will have automatically a queue created, with its name.
|
|
39
|
+
The exchanger is amq.topic
|
|
40
|
+
|
|
32
41
|
## launch.json
|
|
33
42
|
|
|
34
43
|
The launch.json file allows to run all services (the project libs must be in the same directory as "services", which contains all services)
|
|
35
44
|
|
|
36
|
-
##
|
|
45
|
+
## utils
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
### executeFunction
|
|
48
|
+
|
|
49
|
+
lets call dynamically the function of an object, with parameters
|
|
39
50
|
(Format: object as class, function name as string, parameters as dictionary)
|
|
51
|
+
|
|
52
|
+
### withWatchdog
|
|
53
|
+
|
|
54
|
+
Add a watchdog to a promise
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./microservice/microservice.module"), exports);
|
|
18
17
|
__exportStar(require("./microservice/microservice.service"), exports);
|
|
18
|
+
__exportStar(require("./rabbit-mq/rabbit-mq.service"), exports);
|
|
19
19
|
__exportStar(require("./utils"), exports);
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,gEAA8C;AAC9C,0CAAwB"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { INestMicroservice } from '@nestjs/common';
|
|
2
2
|
export declare class MicroserviceService {
|
|
3
3
|
private static serviceAddress;
|
|
4
|
-
private static msName;
|
|
5
4
|
private static getServiceURI;
|
|
6
5
|
private static registerService;
|
|
7
6
|
private static getServerAddress;
|
|
8
7
|
private static startMainMicroService;
|
|
9
8
|
private static startRabbitMQMicroService;
|
|
10
|
-
static bootstrapMicroservice(appModule: any
|
|
9
|
+
static bootstrapMicroservice(appModule: any): Promise<INestMicroservice>;
|
|
11
10
|
static sendTCPMessage(service: any, messagePattern: any, payload?: any): Promise<any>;
|
|
12
|
-
static emitTCPEvent(messagePattern: any, queue?: any, payload?: any): Promise<void>;
|
|
13
|
-
static projectName(): Promise<string>;
|
|
14
11
|
}
|
|
@@ -1,24 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var MicroserviceService_1;
|
|
9
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
3
|
exports.MicroserviceService = void 0;
|
|
11
4
|
const common_1 = require("@nestjs/common");
|
|
12
|
-
const promises_1 = require("fs/promises");
|
|
13
|
-
const path = require("path");
|
|
14
5
|
const core_1 = require("@nestjs/core");
|
|
15
6
|
const microservices_1 = require("@nestjs/microservices");
|
|
16
7
|
const net = require("net");
|
|
17
8
|
const axios_1 = require("axios");
|
|
18
9
|
const rxjs_1 = require("rxjs");
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
10
|
+
const utils = require("../utils");
|
|
11
|
+
class MicroserviceService {
|
|
22
12
|
static async getServiceURI(serviceName) {
|
|
23
13
|
const response = await axios_1.default.get(`${process.env["CONSUL_URL"]}/v1/catalog/service/${serviceName}`);
|
|
24
14
|
const serviceInfo = response.data;
|
|
@@ -36,7 +26,7 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
36
26
|
}
|
|
37
27
|
}
|
|
38
28
|
static async registerService() {
|
|
39
|
-
const projectName = await
|
|
29
|
+
const projectName = await utils.projectName();
|
|
40
30
|
const serviceData = {
|
|
41
31
|
ID: projectName,
|
|
42
32
|
Name: projectName,
|
|
@@ -55,13 +45,15 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
55
45
|
static async getServerAddress() {
|
|
56
46
|
if (process.env.AWS_REGION)
|
|
57
47
|
return {
|
|
58
|
-
address: `haku-sci-${await
|
|
48
|
+
address: `haku-sci-${await utils.projectName()}-${process.env.BRANCH}.${process.env.AWS_REGION}.elasticbeanstalk.com`,
|
|
59
49
|
port: 3000
|
|
60
50
|
};
|
|
61
51
|
const server = net.createServer();
|
|
62
52
|
server.listen(0);
|
|
63
53
|
await new Promise((resolve) => server.once('listening', resolve));
|
|
64
54
|
const address = server.address();
|
|
55
|
+
address.address = 'localhost';
|
|
56
|
+
address.family = 'IPv4';
|
|
65
57
|
server.close();
|
|
66
58
|
return address;
|
|
67
59
|
}
|
|
@@ -73,42 +65,25 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
73
65
|
}
|
|
74
66
|
});
|
|
75
67
|
await app.listen();
|
|
76
|
-
const tcpServer = app.server.server;
|
|
77
|
-
this.serviceAddress = tcpServer.address();
|
|
78
68
|
return app;
|
|
79
69
|
}
|
|
80
|
-
static async startRabbitMQMicroService(appModule
|
|
81
|
-
const queue = await
|
|
70
|
+
static async startRabbitMQMicroService(appModule) {
|
|
71
|
+
const queue = await utils.projectName();
|
|
82
72
|
const app = await core_1.NestFactory.createMicroservice(appModule, {
|
|
83
73
|
transport: microservices_1.Transport.RMQ,
|
|
84
74
|
options: {
|
|
85
75
|
urls: [process.env.RABBITMQ_URL],
|
|
86
76
|
queue: queue,
|
|
87
77
|
queueOptions: {
|
|
88
|
-
durable:
|
|
78
|
+
durable: true,
|
|
89
79
|
},
|
|
90
80
|
noAck: false,
|
|
91
81
|
},
|
|
92
82
|
});
|
|
93
83
|
await app.listen();
|
|
94
|
-
if (!routingKeys)
|
|
95
|
-
return app;
|
|
96
|
-
const connection = await amqp.connect(process.env.RABBITMQ_URL);
|
|
97
|
-
const channel = await connection.createChannel();
|
|
98
|
-
await channel.assertExchange(HAKU_SCI_EXCHANGE, 'direct', { durable: true });
|
|
99
|
-
await channel.assertQueue(queue, { durable: false });
|
|
100
|
-
const bindingPromises = routingKeys.map(async (routingKey) => {
|
|
101
|
-
await channel.bindQueue(queue, HAKU_SCI_EXCHANGE, routingKey);
|
|
102
|
-
});
|
|
103
|
-
await Promise.all([
|
|
104
|
-
channel.assertQueue(queue, { durable: false }),
|
|
105
|
-
...bindingPromises,
|
|
106
|
-
]);
|
|
107
|
-
await channel.close();
|
|
108
|
-
await connection.close();
|
|
109
84
|
return app;
|
|
110
85
|
}
|
|
111
|
-
static async bootstrapMicroservice(appModule
|
|
86
|
+
static async bootstrapMicroservice(appModule) {
|
|
112
87
|
this.serviceAddress = await this.getServerAddress();
|
|
113
88
|
if (process.env["RDS_DBNAME"]) {
|
|
114
89
|
const postGresService = require('./postgres.service');
|
|
@@ -116,7 +91,7 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
116
91
|
}
|
|
117
92
|
const app = await this.startMainMicroService(appModule);
|
|
118
93
|
if (process.env.RABBITMQ_URL)
|
|
119
|
-
await this.startRabbitMQMicroService(appModule
|
|
94
|
+
await this.startRabbitMQMicroService(appModule);
|
|
120
95
|
if (process.env["CONSUL_URL"])
|
|
121
96
|
this.registerService();
|
|
122
97
|
return app;
|
|
@@ -124,7 +99,7 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
124
99
|
static async sendTCPMessage(service, messagePattern, payload) {
|
|
125
100
|
const client = microservices_1.ClientProxyFactory.create({
|
|
126
101
|
transport: microservices_1.Transport.TCP,
|
|
127
|
-
options: await
|
|
102
|
+
options: await MicroserviceService.getServiceURI(service),
|
|
128
103
|
});
|
|
129
104
|
try {
|
|
130
105
|
const result = await (0, rxjs_1.lastValueFrom)(await client.send(messagePattern, payload));
|
|
@@ -134,35 +109,6 @@ let MicroserviceService = MicroserviceService_1 = class MicroserviceService {
|
|
|
134
109
|
client.close();
|
|
135
110
|
}
|
|
136
111
|
}
|
|
137
|
-
|
|
138
|
-
const client = microservices_1.ClientProxyFactory.create({
|
|
139
|
-
options: {
|
|
140
|
-
urls: [process.env.RABBITMQ_URL],
|
|
141
|
-
queue: queue,
|
|
142
|
-
queueOptions: {
|
|
143
|
-
durable: false,
|
|
144
|
-
},
|
|
145
|
-
exchange: HAKU_SCI_EXCHANGE,
|
|
146
|
-
},
|
|
147
|
-
});
|
|
148
|
-
try {
|
|
149
|
-
await client.emit(messagePattern, payload);
|
|
150
|
-
}
|
|
151
|
-
finally {
|
|
152
|
-
client.close();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
static async projectName() {
|
|
156
|
-
if (!this.msName) {
|
|
157
|
-
var data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
|
|
158
|
-
const { name } = JSON.parse(data.toString());
|
|
159
|
-
this.msName = name;
|
|
160
|
-
}
|
|
161
|
-
return this.msName;
|
|
162
|
-
}
|
|
163
|
-
};
|
|
112
|
+
}
|
|
164
113
|
exports.MicroserviceService = MicroserviceService;
|
|
165
|
-
exports.MicroserviceService = MicroserviceService = MicroserviceService_1 = __decorate([
|
|
166
|
-
(0, common_1.Injectable)()
|
|
167
|
-
], MicroserviceService);
|
|
168
114
|
//# sourceMappingURL=microservice.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/rabbit-mq/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAChC,QAAA,SAAS,GAAG,WAAW,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RabbitMqModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const rabbit_mq_service_1 = require("./rabbit-mq.service");
|
|
12
|
+
const nestjs_rabbitmq_1 = require("@golevelup/nestjs-rabbitmq");
|
|
13
|
+
const utils = require("./constants");
|
|
14
|
+
let RabbitMqModule = class RabbitMqModule {
|
|
15
|
+
};
|
|
16
|
+
exports.RabbitMqModule = RabbitMqModule;
|
|
17
|
+
exports.RabbitMqModule = RabbitMqModule = __decorate([
|
|
18
|
+
(0, common_1.Module)({
|
|
19
|
+
imports: [
|
|
20
|
+
nestjs_rabbitmq_1.RabbitMQModule.forRoot({
|
|
21
|
+
exchanges: [
|
|
22
|
+
{
|
|
23
|
+
name: utils.HAKU_SCI_EXCHANGE,
|
|
24
|
+
type: 'topic',
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
uri: process.env.RABBITMQ_URL,
|
|
28
|
+
}),
|
|
29
|
+
],
|
|
30
|
+
providers: [rabbit_mq_service_1.RabbitMqService],
|
|
31
|
+
exports: [rabbit_mq_service_1.RabbitMqService]
|
|
32
|
+
})
|
|
33
|
+
], RabbitMqModule);
|
|
34
|
+
//# sourceMappingURL=rabbit-mq.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rabbit-mq.module.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAsD;AACtD,gEAA4D;AAC5D,qCAAqC;AAiB9B,IAAM,cAAc,GAApB,MAAM,cAAc;CAE1B,CAAA;AAFY,wCAAc;yBAAd,cAAc;IAf1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,gCAAc,CAAC,OAAO,CAAC;gBACrB,SAAS,EAAE;oBACT;wBACE,IAAI,EAAE,KAAK,CAAC,iBAAiB;wBAC7B,IAAI,EAAE,OAAO;qBACd;iBACF;gBACD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;aAC9B,CAAC;SACH;QACD,SAAS,EAAE,CAAC,mCAAe,CAAC;QAC5B,OAAO,EAAE,CAAC,mCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAE1B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AmqpConnection } from '@golevelup/nestjs-rabbitmq';
|
|
2
|
+
export declare class RabbitMqService {
|
|
3
|
+
static instance: RabbitMqService;
|
|
4
|
+
waitAckownledge: Record<string, {
|
|
5
|
+
count: number;
|
|
6
|
+
resolve: () => void;
|
|
7
|
+
reject: () => void;
|
|
8
|
+
}>;
|
|
9
|
+
amqpConnection: AmqpConnection;
|
|
10
|
+
projectName: string;
|
|
11
|
+
ackAttached: boolean;
|
|
12
|
+
static get(): Promise<RabbitMqService>;
|
|
13
|
+
private constructor();
|
|
14
|
+
private init;
|
|
15
|
+
private get ackQueueName();
|
|
16
|
+
dispatchMessage(messagePattern: string, userId: string, id: string, payload?: Record<string, any>, requireAck?: boolean): Promise<void>;
|
|
17
|
+
sendAck(message: any): void;
|
|
18
|
+
updateAck(correlationId: string): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function HakuSubscribe(options: {
|
|
21
|
+
routingKey: string;
|
|
22
|
+
}): MethodDecorator;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RabbitMqService = void 0;
|
|
4
|
+
exports.HakuSubscribe = HakuSubscribe;
|
|
5
|
+
const nestjs_rabbitmq_1 = require("@golevelup/nestjs-rabbitmq");
|
|
6
|
+
const rabbitMQutils = require("./constants");
|
|
7
|
+
const utils = require("../utils");
|
|
8
|
+
const axios_1 = require("axios");
|
|
9
|
+
const rabbitMqApiAuth = {
|
|
10
|
+
username: process.env.RABBITMQ_USERNAME,
|
|
11
|
+
password: process.env.RABBITMQ_PASSWORD,
|
|
12
|
+
};
|
|
13
|
+
class RabbitMqService {
|
|
14
|
+
static async get() {
|
|
15
|
+
if (!this.instance) {
|
|
16
|
+
this.instance = new RabbitMqService();
|
|
17
|
+
await this.instance.init();
|
|
18
|
+
}
|
|
19
|
+
return this.instance;
|
|
20
|
+
}
|
|
21
|
+
constructor() {
|
|
22
|
+
this.waitAckownledge = {};
|
|
23
|
+
this.ackAttached = false;
|
|
24
|
+
}
|
|
25
|
+
async init() {
|
|
26
|
+
this.projectName = await utils.projectName();
|
|
27
|
+
this.amqpConnection = new nestjs_rabbitmq_1.AmqpConnection({
|
|
28
|
+
exchanges: [
|
|
29
|
+
{
|
|
30
|
+
name: rabbitMQutils.HAKU_SCI_EXCHANGE,
|
|
31
|
+
type: 'topic',
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
uri: process.env.RABBITMQ_URL,
|
|
35
|
+
});
|
|
36
|
+
await this.amqpConnection.init();
|
|
37
|
+
}
|
|
38
|
+
get ackQueueName() {
|
|
39
|
+
return `${this.projectName}_${rabbitMQutils.ACK_QUEUE}`;
|
|
40
|
+
}
|
|
41
|
+
async dispatchMessage(messagePattern, userId, id, payload = {}, requireAck = false) {
|
|
42
|
+
const options = { headers: { userId: userId, id: id }, correlationId: null };
|
|
43
|
+
let p;
|
|
44
|
+
if (requireAck) {
|
|
45
|
+
if (!this.ackAttached) {
|
|
46
|
+
this.ackAttached = true;
|
|
47
|
+
await this.amqpConnection.channel.assertQueue(this.ackQueueName, { durable: true });
|
|
48
|
+
this.amqpConnection.channel.consume(this.ackQueueName, async (message) => {
|
|
49
|
+
const ackMessage = JSON.parse(message.content.toString());
|
|
50
|
+
this.updateAck(ackMessage.properties.correlationId);
|
|
51
|
+
this.amqpConnection.channel.ack(message);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
options.headers["replyTo"] = this.ackQueueName;
|
|
55
|
+
options.correlationId = Date.now().toString();
|
|
56
|
+
;
|
|
57
|
+
const response = await axios_1.default.get(`${process.env.RABBITMQ_API_URL}/bindings`, { auth: rabbitMqApiAuth });
|
|
58
|
+
let countExpectedAcknowledged = response.data.filter((binding) => binding.source === rabbitMQutils.HAKU_SCI_EXCHANGE && binding.routing_key === messagePattern).length;
|
|
59
|
+
p = new Promise((resolve, reject) => {
|
|
60
|
+
this.waitAckownledge[options.correlationId] = { count: countExpectedAcknowledged, resolve: resolve, reject: reject };
|
|
61
|
+
});
|
|
62
|
+
p = utils.withWatchdog(p, 10000);
|
|
63
|
+
}
|
|
64
|
+
;
|
|
65
|
+
await this.amqpConnection.publish(rabbitMQutils.HAKU_SCI_EXCHANGE, messagePattern, payload, options);
|
|
66
|
+
return p;
|
|
67
|
+
}
|
|
68
|
+
sendAck(message) {
|
|
69
|
+
this.amqpConnection.publish('', message.properties.headers.replyTo, message);
|
|
70
|
+
}
|
|
71
|
+
updateAck(correlationId) {
|
|
72
|
+
if (this.waitAckownledge[correlationId]) {
|
|
73
|
+
this.waitAckownledge[correlationId].count--;
|
|
74
|
+
if (this.waitAckownledge[correlationId].count == 0) {
|
|
75
|
+
this.waitAckownledge[correlationId].resolve();
|
|
76
|
+
delete this.waitAckownledge[correlationId];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.RabbitMqService = RabbitMqService;
|
|
82
|
+
function HakuSubscribe(options) {
|
|
83
|
+
return function (target, key, descriptor) {
|
|
84
|
+
const originalMethod = descriptor.value;
|
|
85
|
+
descriptor.value = async function (...args) {
|
|
86
|
+
const message = args[1];
|
|
87
|
+
try {
|
|
88
|
+
await originalMethod.apply(this, args);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
message.properties.headers["error"] = error;
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
if (message.properties.headers.replyTo) {
|
|
95
|
+
try {
|
|
96
|
+
await RabbitMqService.get().then((rabbitMqService) => {
|
|
97
|
+
rabbitMqService.sendAck(message);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (e) {
|
|
101
|
+
console.log(e);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
utils.projectName().then((projectName) => {
|
|
108
|
+
(0, nestjs_rabbitmq_1.RabbitSubscribe)({
|
|
109
|
+
routingKey: options.routingKey,
|
|
110
|
+
exchange: rabbitMQutils.HAKU_SCI_EXCHANGE,
|
|
111
|
+
queue: projectName,
|
|
112
|
+
})(target, key, descriptor);
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=rabbit-mq.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rabbit-mq.service.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const testing_1 = require("@nestjs/testing");
|
|
4
|
+
const rabbit_mq_service_1 = require("./rabbit-mq.service");
|
|
5
|
+
describe('RabbitMqService', () => {
|
|
6
|
+
let service;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
const module = await testing_1.Test.createTestingModule({
|
|
9
|
+
providers: [rabbit_mq_service_1.RabbitMqService],
|
|
10
|
+
}).compile();
|
|
11
|
+
service = module.get(rabbit_mq_service_1.RabbitMqService);
|
|
12
|
+
});
|
|
13
|
+
it('should be defined', () => {
|
|
14
|
+
expect(service).toBeDefined();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=rabbit-mq.service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rabbit-mq.service.spec.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.spec.ts"],"names":[],"mappings":";;AAAA,6CAAsD;AACtD,2DAAsD;AAEtD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAwB,CAAC;IAE7B,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,MAAM,GAAkB,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC3D,SAAS,EAAE,CAAC,mCAAe,CAAC;SAC7B,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,OAAO,GAAG,MAAM,CAAC,GAAG,CAAkB,mCAAe,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const HAKU_SCI_EXCHANGE = "amq.topic";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rabbit-mq/utils.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,WAAW,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
1
|
export declare function executeFunction<F extends (...args: any[]) => any>(parent: any, funcName: string, params: Record<string, any>): ReturnType<F>;
|
|
2
|
+
export declare function projectName(): Promise<string>;
|
|
3
|
+
export declare function withWatchdog<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.executeFunction = executeFunction;
|
|
4
|
+
exports.projectName = projectName;
|
|
5
|
+
exports.withWatchdog = withWatchdog;
|
|
6
|
+
const promises_1 = require("fs/promises");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const common_1 = require("@nestjs/common");
|
|
4
9
|
function executeFunction(parent, funcName, params) {
|
|
5
10
|
const func = parent[funcName];
|
|
6
11
|
const boundFunc = func.bind(parent);
|
|
@@ -19,4 +24,28 @@ function getFunctionParameterNames(func) {
|
|
|
19
24
|
.map(param => param.trim())
|
|
20
25
|
.filter(param => param);
|
|
21
26
|
}
|
|
27
|
+
async function projectName() {
|
|
28
|
+
if (!this.msName) {
|
|
29
|
+
var data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
|
|
30
|
+
const { name } = JSON.parse(data.toString());
|
|
31
|
+
this.msName = name;
|
|
32
|
+
}
|
|
33
|
+
return this.msName;
|
|
34
|
+
}
|
|
35
|
+
function withWatchdog(promise, timeoutMs) {
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
const timer = setTimeout(() => {
|
|
38
|
+
reject(new common_1.HttpException(`Gateway Timeout`, common_1.HttpStatus.GATEWAY_TIMEOUT));
|
|
39
|
+
}, timeoutMs);
|
|
40
|
+
promise
|
|
41
|
+
.then((result) => {
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
resolve(result);
|
|
44
|
+
})
|
|
45
|
+
.catch((err) => {
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
reject(err);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
22
51
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAIA,0CAgBC;AAeD,kCAYC;AAED,oCAgBC;AAjED,0CAAuC;AACvC,6BAA6B;AAC7B,2CAA2D;AAE3D,SAAgB,eAAe,CAC7B,MAAW,EACX,QAAgB,EAChB,MAA2B;IAE3B,MAAM,IAAI,GAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAGpC,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAGnD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAGlD,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAc;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,MAAM,IAAA,mBAAQ,EACvB,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,CACf,CACF,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAgB,YAAY,CAAI,OAAmB,EAAE,SAAiB;IACpE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,IAAI,sBAAa,CAAC,iBAAiB,EAAC,mBAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1E,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haku-sci/utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "utils from haku-sci. Library only",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,9 +13,12 @@
|
|
|
13
13
|
"pg": "^8.13.1"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"
|
|
16
|
+
"@golevelup/nestjs-rabbitmq": "^5.7.0",
|
|
17
17
|
"amqp-connection-manager": "^4.1.14",
|
|
18
|
-
"amqplib": "^0.10.5"
|
|
18
|
+
"amqplib": "^0.10.5",
|
|
19
|
+
"axios": "^1.7.9",
|
|
20
|
+
"pg": "^8.13.1",
|
|
21
|
+
"uuid": "^11.0.5"
|
|
19
22
|
},
|
|
20
23
|
"devDependencies": {
|
|
21
24
|
"@nestjs/testing": "^10.4.1",
|