@haku-sci/utils 1.5.0 → 1.6.1
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 +6 -2
- package/dist/microservice/microservice.service.js +5 -5
- package/dist/microservice/microservice.service.js.map +1 -1
- package/dist/rabbit-mq/_rabbit-mq.service.d.ts +23 -0
- package/dist/rabbit-mq/_rabbit-mq.service.js +120 -0
- package/dist/rabbit-mq/_rabbit-mq.service.js.map +1 -0
- package/dist/rabbit-mq/rabbit-mq.service.js +2 -2
- package/dist/rabbit-mq/rabbit-mq.service.js.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +7 -4
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ if the service uses a database PostgreSQL, and this database doesn't exist in th
|
|
|
32
32
|
## RabbitMQ
|
|
33
33
|
|
|
34
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
|
|
35
|
+
If the option is activated, a queue ack_queue_\<name of the microservice\> is created
|
|
36
36
|
|
|
37
37
|
The decorator HakuSciSubscriber allows to listen for a specific keyword.
|
|
38
38
|
Each microservice which register with this decorator will have automatically a queue created, with its name.
|
|
@@ -40,7 +40,7 @@ The exchanger is amq.topic
|
|
|
40
40
|
|
|
41
41
|
## launch.json
|
|
42
42
|
|
|
43
|
-
The launch.json file allows to run all services (the
|
|
43
|
+
The launch.json file allows to run all services (the microservice libs must be in the same directory as "services", which contains all services)
|
|
44
44
|
|
|
45
45
|
## utils
|
|
46
46
|
|
|
@@ -49,6 +49,10 @@ The launch.json file allows to run all services (the project libs must be in the
|
|
|
49
49
|
lets call dynamically the function of an object, with parameters
|
|
50
50
|
(Format: object as class, function name as string, parameters as dictionary)
|
|
51
51
|
|
|
52
|
+
### getSortedParameters
|
|
53
|
+
|
|
54
|
+
for a function, get available parameters as dictionary, and return a list of parameters in correct order, to be run for this function (...args)
|
|
55
|
+
|
|
52
56
|
### withWatchdog
|
|
53
57
|
|
|
54
58
|
Add a watchdog to a promise
|
|
@@ -26,10 +26,10 @@ class MicroserviceService {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
static async registerService() {
|
|
29
|
-
const
|
|
29
|
+
const microServiceName = await utils.microServiceName();
|
|
30
30
|
const serviceData = {
|
|
31
|
-
ID:
|
|
32
|
-
Name:
|
|
31
|
+
ID: microServiceName,
|
|
32
|
+
Name: microServiceName,
|
|
33
33
|
Address: this.serviceAddress.address,
|
|
34
34
|
Port: this.serviceAddress.port,
|
|
35
35
|
Check: {
|
|
@@ -45,7 +45,7 @@ class MicroserviceService {
|
|
|
45
45
|
static async getServerAddress() {
|
|
46
46
|
if (process.env.AWS_REGION)
|
|
47
47
|
return {
|
|
48
|
-
address: `haku-sci-${await utils.
|
|
48
|
+
address: `haku-sci-${await utils.microServiceName()}-${process.env.BRANCH}.${process.env.AWS_REGION}.elasticbeanstalk.com`,
|
|
49
49
|
port: 3000
|
|
50
50
|
};
|
|
51
51
|
const server = net.createServer();
|
|
@@ -68,7 +68,7 @@ class MicroserviceService {
|
|
|
68
68
|
return app;
|
|
69
69
|
}
|
|
70
70
|
static async startRabbitMQMicroService(appModule) {
|
|
71
|
-
const queue = await utils.
|
|
71
|
+
const queue = await utils.microServiceName();
|
|
72
72
|
const app = await core_1.NestFactory.createMicroservice(appModule, {
|
|
73
73
|
transport: microservices_1.Transport.RMQ,
|
|
74
74
|
options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":";;;AAAA,2CAAsE;AACtE,uCAA2C;AAC3C,yDAAwG;AACxG,2BAA2B;AAC3B,iCAA0B;AAC1B,+BAAqC;AACrC,kCAAiC;AAEjC,MAAa,mBAAmB;IAEtB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,WAAmB;QACpD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;QACnG,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QAElC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;YAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;YACjC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,0BAAiB,CAAC,WAAW,WAAW,8BAA8B,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,MAAM,
|
|
1
|
+
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AmqpConnection } from '@golevelup/nestjs-rabbitmq';
|
|
2
|
+
export declare class RabbitMqService {
|
|
3
|
+
static instance: RabbitMqService;
|
|
4
|
+
waitAckownledge: Record<string, {
|
|
5
|
+
count: number;
|
|
6
|
+
responses: Record<string, any>;
|
|
7
|
+
resolve: (data: Record<string, any>) => void;
|
|
8
|
+
reject: (error: any) => void;
|
|
9
|
+
}>;
|
|
10
|
+
amqpConnection: AmqpConnection;
|
|
11
|
+
microServiceName: string;
|
|
12
|
+
ackAttached: boolean;
|
|
13
|
+
static get(): Promise<RabbitMqService>;
|
|
14
|
+
private constructor();
|
|
15
|
+
private init;
|
|
16
|
+
private get ackQueueName();
|
|
17
|
+
dispatchMessage(messagePattern: string, userId: string, id: string, payload?: Record<string, any>, requireAck?: boolean): Promise<Record<string, any>>;
|
|
18
|
+
private handleAckResponse;
|
|
19
|
+
sendAck(message: any): void;
|
|
20
|
+
}
|
|
21
|
+
export declare function HakuSubscribe(options: {
|
|
22
|
+
routingKey: string;
|
|
23
|
+
}): MethodDecorator;
|
|
@@ -0,0 +1,120 @@
|
|
|
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.microServiceName = await utils.microServiceName();
|
|
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.microServiceName}_${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.handleAckResponse(ackMessage);
|
|
51
|
+
this.amqpConnection.channel.ack(message);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
options.headers["replyTo"] = this.ackQueueName;
|
|
55
|
+
options.correlationId = Date.now().toString();
|
|
56
|
+
const response = await axios_1.default.get(`${process.env.RABBITMQ_API_URL}/bindings`, { auth: rabbitMqApiAuth });
|
|
57
|
+
let countExpectedAcknowledged = response.data.filter((binding) => binding.source === rabbitMQutils.HAKU_SCI_EXCHANGE && binding.routing_key === messagePattern).length;
|
|
58
|
+
p = new Promise((resolve, reject) => {
|
|
59
|
+
this.waitAckownledge[options.correlationId] = { count: countExpectedAcknowledged, responses: {}, resolve, reject };
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
await this.amqpConnection.publish(rabbitMQutils.HAKU_SCI_EXCHANGE, messagePattern, payload, options);
|
|
63
|
+
return p || Promise.resolve({});
|
|
64
|
+
}
|
|
65
|
+
handleAckResponse(ackMessage) {
|
|
66
|
+
const { correlationId, microServiceName, response, error } = ackMessage;
|
|
67
|
+
if (!this.waitAckownledge[correlationId])
|
|
68
|
+
return;
|
|
69
|
+
if (error) {
|
|
70
|
+
this.waitAckownledge[correlationId].reject(error);
|
|
71
|
+
delete this.waitAckownledge[correlationId];
|
|
72
|
+
}
|
|
73
|
+
this.waitAckownledge[correlationId].responses[microServiceName] = response;
|
|
74
|
+
this.waitAckownledge[correlationId].count--;
|
|
75
|
+
if (this.waitAckownledge[correlationId].count === 0) {
|
|
76
|
+
this.waitAckownledge[correlationId].resolve(this.waitAckownledge[correlationId].responses);
|
|
77
|
+
delete this.waitAckownledge[correlationId];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
sendAck(message) {
|
|
81
|
+
this.amqpConnection.publish('', message.properties.headers.replyTo, message);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.RabbitMqService = RabbitMqService;
|
|
85
|
+
function HakuSubscribe(options) {
|
|
86
|
+
return function (target, key, descriptor) {
|
|
87
|
+
const originalMethod = descriptor.value;
|
|
88
|
+
descriptor.value = async function (...args) {
|
|
89
|
+
const message = args[1];
|
|
90
|
+
try {
|
|
91
|
+
message.response = await originalMethod.apply(this, args);
|
|
92
|
+
message.properties.headers["microService"] = await utils.microServiceName();
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
message.properties.headers["error"] = error;
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
if (message.properties.headers.replyTo) {
|
|
99
|
+
try {
|
|
100
|
+
await RabbitMqService.get().then((rabbitMqService) => {
|
|
101
|
+
rabbitMqService.sendAck(message);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
catch (e) {
|
|
105
|
+
console.log(e);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
utils.microServiceName().then((microServiceName) => {
|
|
112
|
+
(0, nestjs_rabbitmq_1.RabbitSubscribe)({
|
|
113
|
+
routingKey: options.routingKey,
|
|
114
|
+
exchange: rabbitMQutils.HAKU_SCI_EXCHANGE,
|
|
115
|
+
queue: microServiceName,
|
|
116
|
+
})(target, key, descriptor);
|
|
117
|
+
});
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# 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":";;;AAqGA,sCA6BC;AAjID,gEAA6E;AAC7E,6CAA6C;AAC7C,kCAAkC;AAClC,iCAA0B;AAE1B,MAAM,eAAe,GAAG;IACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;CAC1C,CAAC;AAEF,MAAa,eAAe;IAOxB,MAAM,CAAC,KAAK,CAAC,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;QAbA,oBAAe,GAAkJ,EAAE,CAAC;QAGpK,gBAAW,GAAY,KAAK,CAAC;IAUN,CAAC;IAEhB,KAAK,CAAC,IAAI;QACd,IAAI,CAAC,gBAAgB,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,CAAC;YACrC,SAAS,EAAE;gBACP;oBACI,IAAI,EAAE,aAAa,CAAC,iBAAiB;oBACrC,IAAI,EAAE,OAAO;iBAChB;aACJ;YACD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;SAChC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,IAAY,YAAY;QACpB,OAAO,GAAG,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,cAAsB,EAAE,MAAc,EAAE,EAAU,EAAE,UAA+B,EAAE,EAAE,aAAsB,KAAK;QACpI,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC7E,IAAI,CAA+B,CAAC;QAEpC,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBACrE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC1D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;oBACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACP,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;YAE9C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YACxG,IAAI,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAClE,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,iBAAiB,IAAI,OAAO,CAAC,WAAW,KAAK,cAAc,CAAC,CAAC,MAAM,CAAC;YAEzG,CAAC,GAAG,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YACvH,CAAC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrG,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,iBAAiB,CAAC,UAAe;QACrC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;YAAE,OAAO;QACjD,IAAI,KAAK,EAAC,CAAC;YACP,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAC,QAAQ,CAAA;QACxE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;IACL,CAAC;IAED,OAAO,CAAC,OAAW;QACf,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;CAEJ;AAvFD,0CAuFC;AAGD,SAAgB,aAAa,CAAC,OAA+B;IACzD,OAAO,UAAU,MAAW,EAAE,GAAW,EAAE,UAA8B;QACrE,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QACxC,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC;gBACD,OAAO,CAAC,QAAQ,GAAC,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACxD,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,GAAC,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC7E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,GAAC,KAAK,CAAC;YAC9C,CAAC;oBACM,CAAC;gBACJ,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAC,CAAC;oBACpC,IAAG,CAAC;wBACA,MAAM,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;4BACjD,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBACrC,CAAC,CAAC,CAAC;oBACP,CAAC;oBAAA,OAAM,CAAC,EAAC,CAAC;wBAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;oBAAA,CAAC;gBAC7B,CAAC;gBAAA,CAAC;YACN,CAAC;QACL,CAAC,CAAA;QACD,KAAK,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE;YAC/C,IAAA,iCAAe,EAAC;gBACZ,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,aAAa,CAAC,iBAAiB;gBACzC,KAAK,EAAE,gBAAgB;aAC1B,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -23,7 +23,7 @@ class RabbitMqService {
|
|
|
23
23
|
this.ackAttached = false;
|
|
24
24
|
}
|
|
25
25
|
async init() {
|
|
26
|
-
this.projectName = await utils.
|
|
26
|
+
this.projectName = await utils.microServiceName();
|
|
27
27
|
this.amqpConnection = new nestjs_rabbitmq_1.AmqpConnection({
|
|
28
28
|
exchanges: [
|
|
29
29
|
{
|
|
@@ -104,7 +104,7 @@ function HakuSubscribe(options) {
|
|
|
104
104
|
;
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
|
-
utils.
|
|
107
|
+
utils.microServiceName().then((projectName) => {
|
|
108
108
|
(0, nestjs_rabbitmq_1.RabbitSubscribe)({
|
|
109
109
|
routingKey: options.routingKey,
|
|
110
110
|
exchange: rabbitMQutils.HAKU_SCI_EXCHANGE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbit-mq.service.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.ts"],"names":[],"mappings":";;;AA+FA,sCA4BC;AA1HD,gEAA6E;AAC7E,6CAA6C;AAC7C,kCAAkC;AAClC,iCAA0B;AAE1B,MAAM,eAAe,GAAG;IACpB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;IACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;CACxC,CAAC;AAEJ,MAAa,eAAe;IAMxB,MAAM,CAAC,KAAK,CAAC,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;YACtC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;QAZA,oBAAe,GAAgE,EAAE,CAAC;QAGlF,gBAAW,GAAS,KAAK,CAAC;IASH,CAAC;IAEhB,KAAK,CAAC,IAAI;QACd,IAAI,CAAC,WAAW,GAAC,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"rabbit-mq.service.js","sourceRoot":"","sources":["../../src/rabbit-mq/rabbit-mq.service.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
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
|
|
2
|
+
export declare function getSortedParameters(func: Function, params: Record<string, any>): string[];
|
|
3
|
+
export declare function microServiceName(): Promise<string>;
|
|
3
4
|
export declare function withWatchdog<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.executeFunction = executeFunction;
|
|
4
|
-
exports.
|
|
4
|
+
exports.getSortedParameters = getSortedParameters;
|
|
5
|
+
exports.microServiceName = microServiceName;
|
|
5
6
|
exports.withWatchdog = withWatchdog;
|
|
6
7
|
const promises_1 = require("fs/promises");
|
|
7
8
|
const path = require("path");
|
|
@@ -9,9 +10,11 @@ const common_1 = require("@nestjs/common");
|
|
|
9
10
|
function executeFunction(parent, funcName, params) {
|
|
10
11
|
const func = parent[funcName];
|
|
11
12
|
const boundFunc = func.bind(parent);
|
|
13
|
+
return boundFunc(...getSortedParameters(func, params));
|
|
14
|
+
}
|
|
15
|
+
function getSortedParameters(func, params) {
|
|
12
16
|
const paramNames = getFunctionParameterNames(func);
|
|
13
|
-
|
|
14
|
-
return boundFunc(...args);
|
|
17
|
+
return paramNames.map(name => params[name]);
|
|
15
18
|
}
|
|
16
19
|
function getFunctionParameterNames(func) {
|
|
17
20
|
const fnStr = func.toString();
|
|
@@ -24,7 +27,7 @@ function getFunctionParameterNames(func) {
|
|
|
24
27
|
.map(param => param.trim())
|
|
25
28
|
.filter(param => param);
|
|
26
29
|
}
|
|
27
|
-
async function
|
|
30
|
+
async function microServiceName() {
|
|
28
31
|
if (!this.msName) {
|
|
29
32
|
var data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
|
|
30
33
|
const { name } = JSON.parse(data.toString());
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAIA,0CAUC;AAED,kDAGC;AAeD,4CAYC;AAED,oCAgBC;AAhED,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,OAAO,SAAS,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAC,MAAM,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAc,EAAC,MAA0B;IAC3E,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,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,gBAAgB;IACpC,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"}
|