exodus-framework 2.1.1048 → 2.1.1050
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.
@@ -17,12 +17,12 @@ declare class RabbitMQService extends Service {
|
|
17
17
|
private attempts;
|
18
18
|
private exchangeName;
|
19
19
|
private queueName;
|
20
|
+
private workersQueueName;
|
20
21
|
private isReconnecting;
|
21
22
|
private isConnected;
|
22
23
|
onServiceInit(): Promise<void>;
|
23
24
|
onStart(): Promise<boolean>;
|
24
25
|
onExodusStarted(): Promise<void>;
|
25
|
-
onExodusMasterStarted(): Promise<void>;
|
26
26
|
onStartFail(): Promise<void>;
|
27
27
|
connect(): Promise<boolean>;
|
28
28
|
registerHandles(): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rabitmq.d.ts","sourceRoot":"","sources":["../../src/services/rabitmq.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"rabitmq.d.ts","sourceRoot":"","sources":["../../src/services/rabitmq.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAKtB;;;;;;GAMG;AACH,cAAM,eAAgB,SAAQ,OAAO;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,oBAAoB,CAA0D;IACtF,OAAO,CAAC,QAAQ,CAAsB;IAEtC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAS;IAEf,aAAa;IAgBb,OAAO;IAMP,eAAe;IAWf,WAAW;IAKX,OAAO;IAgCP,eAAe;IA2BrB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,sBAAsB;IAKtF,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;;;OASG;IACG,WAAW,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACpD,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC7B,aAAa,CAAC,EAAE,MAAM;IAKxB;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAChD,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC7B,aAAa,CAAC,EAAE,MAAM;IAqBlB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc;IA6CjD,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc;IAiBhD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,wBAAwB;IAI/C,aAAa,CAAC,CAAC,SAAS,MAAM,oBAAoB,EACvD,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAY9B,cAAc,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAW7D,YAAY,CACjB,CAAC,SAAS,MAAM,oBAAoB,EACpC,CAAC,SAAS,MAAM,oBAAoB,EACpC,IAAI,EAAE;QACN,IAAI,EAAE;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;SAAE,CAAC;QAClD,MAAM,EAAE;YACN,KAAK,EAAE,CAAC,CAAC;YACT,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACpC,SAAS,EAAE,MAAM,IAAI,CAAC;YACtB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;KACH;CAwBF;AAED,eAAe,eAAe,CAAC"}
|
package/lib/services/rabitmq.js
CHANGED
@@ -8,6 +8,7 @@ var _amqplib = _interopRequireDefault(require("amqplib"));
|
|
8
8
|
var _crypto = require("crypto");
|
9
9
|
var _app = require("../app");
|
10
10
|
var _service = _interopRequireDefault(require("../app/classes/service"));
|
11
|
+
var _core = require("../contracts/core");
|
11
12
|
var _messaging = _interopRequireDefault(require("../routes/messaging"));
|
12
13
|
var _logger = _interopRequireDefault(require("../services/logger"));
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
@@ -27,6 +28,7 @@ class RabbitMQService extends _service.default {
|
|
27
28
|
attempts;
|
28
29
|
exchangeName;
|
29
30
|
queueName;
|
31
|
+
workersQueueName;
|
30
32
|
isReconnecting = false;
|
31
33
|
isConnected = false;
|
32
34
|
async onServiceInit() {
|
@@ -37,6 +39,7 @@ class RabbitMQService extends _service.default {
|
|
37
39
|
this.attempts = new Map();
|
38
40
|
this.exchangeName = _app.Core.settings.getMessaging().exchanges.main;
|
39
41
|
this.queueName = _app.Core.settings.getAppication().appId;
|
42
|
+
this.workersQueueName = `${this.queueName}-workers`;
|
40
43
|
this.eventCustomListeners = new Map();
|
41
44
|
this.mainRouter = {
|
42
45
|
..._messaging.default,
|
@@ -49,13 +52,11 @@ class RabbitMQService extends _service.default {
|
|
49
52
|
}
|
50
53
|
async onExodusStarted() {
|
51
54
|
await super.onExodusStarted();
|
52
|
-
|
55
|
+
const queueToConsume = this.isCluster() ? this.workersQueueName : this.queueName;
|
56
|
+
await this.channel.consume(queueToConsume, this.consumeFromQueue.bind(this), {
|
53
57
|
noAck: false
|
54
58
|
});
|
55
59
|
}
|
56
|
-
async onExodusMasterStarted() {
|
57
|
-
await super.onExodusMasterStarted();
|
58
|
-
}
|
59
60
|
async onStartFail() {
|
60
61
|
await super.onStartFail();
|
61
62
|
this.log(`Not possible to connect RabitMQ`, 'danger');
|
@@ -73,7 +74,10 @@ class RabbitMQService extends _service.default {
|
|
73
74
|
await this.channel.assertExchange(mainExchanges, 'topic', {
|
74
75
|
durable: true
|
75
76
|
});
|
76
|
-
await this.channel.assertQueue(
|
77
|
+
await this.channel.assertQueue(this.queueName, {
|
78
|
+
durable: true
|
79
|
+
});
|
80
|
+
await this.channel.assertQueue(this.workersQueueName, {
|
77
81
|
durable: true
|
78
82
|
});
|
79
83
|
this.isConnected = true;
|
@@ -93,9 +97,18 @@ class RabbitMQService extends _service.default {
|
|
93
97
|
if (Array.isArray(handler)) {
|
94
98
|
const [side] = handler;
|
95
99
|
if (this.getExecutionSide() != side) continue;
|
96
|
-
|
100
|
+
const targetQueue = side === _core.eExecutionSide.MASTER ? this.queueName : this.workersQueueName;
|
101
|
+
await this.channel.bindQueue(targetQueue, this.exchangeName, topic);
|
97
102
|
} else {
|
98
|
-
|
103
|
+
if (this.isMaster()) {
|
104
|
+
await this.channel.bindQueue(this.queueName, this.exchangeName, topic);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}
|
108
|
+
for (const [topic, handler] of Object.entries(this.decoratorRouter)) {
|
109
|
+
if (handler) {
|
110
|
+
const targetQueue = this.isCluster() ? this.workersQueueName : this.queueName;
|
111
|
+
await this.channel.bindQueue(targetQueue, this.exchangeName, topic);
|
99
112
|
}
|
100
113
|
}
|
101
114
|
}
|
@@ -167,15 +180,19 @@ class RabbitMQService extends _service.default {
|
|
167
180
|
const topic = msg.fields.routingKey;
|
168
181
|
const content = JSON.parse(msg.content.toString());
|
169
182
|
const callBack = this.mainRouter[topic];
|
183
|
+
const decoratorCallback = this.decoratorRouter[topic];
|
170
184
|
if (callBack) {
|
171
185
|
if (Array.isArray(callBack)) {
|
172
186
|
const [side, cb] = callBack;
|
173
187
|
if (this.getExecutionSide() === side) {
|
174
188
|
await cb(content.data, () => {}, content.serviceId, content.transactionId);
|
175
189
|
}
|
190
|
+
} else {
|
191
|
+
await callBack(content.data, () => {}, content.serviceId, content.transactionId);
|
176
192
|
}
|
177
|
-
}
|
178
|
-
|
193
|
+
}
|
194
|
+
if (decoratorCallback && typeof decoratorCallback === 'function') {
|
195
|
+
await decoratorCallback(content.data, () => {}, content.serviceId, content.transactionId);
|
179
196
|
}
|
180
197
|
this.channel.ack(msg);
|
181
198
|
if (this.eventCustomListeners.has(topic)) {
|