@6thbridge/utils 1.0.0 → 1.0.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.
@@ -1,393 +0,0 @@
1
- 'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.RabbitMQ = void 0;
16
- const amqp_connection_manager_1 = __importDefault(require("amqp-connection-manager"));
17
- const logger_1 = require("../logger/logger");
18
- const types_1 = require("../types");
19
- /**
20
- * @deprecated
21
- */
22
- class RabbitMQ {
23
- constructor() {
24
- this.channel = null;
25
- this.retryCountBeforeExit = 10;
26
- }
27
- /**
28
- * Get the singleton instance of RabbitMQ
29
- * @returns {RabbitMQ} The singleton instance
30
- */
31
- static getInstance() {
32
- if (!RabbitMQ.instance) {
33
- RabbitMQ.instance = new RabbitMQ();
34
- }
35
- return RabbitMQ.instance;
36
- }
37
- /**
38
- *
39
- * @param {Object} options
40
- * @param {string} options.url
41
- * @param {number} options.retryCountBeforeExit
42
- * @param {number} options.heartbeat
43
- * @return {Promise<null|*|undefined>}
44
- */
45
- static init(options) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- return RabbitMQ.getInstance().init(options);
48
- });
49
- }
50
- /**
51
- *
52
- * @param {Object} options
53
- * @param {string} options.url
54
- * @param {number} options.retryCountBeforeExit
55
- * @param {number} options.heartbeat
56
- * @return {Promise<null|*|undefined>}
57
- */
58
- init(options) {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- try {
61
- if (!options)
62
- options = {};
63
- options.url = options.url || process.env.RABBITMQ_CLUSTER_URL || process.env.RABBITMQ_URL;
64
- options.heartbeat = options.heartbeat || 5;
65
- if (!options.url)
66
- throw Error('RabbitMQ URL is required');
67
- //We are splitting the URL because of clusters
68
- const urlArray = options.url.split(',');
69
- this.connection = amqp_connection_manager_1.default.connect(urlArray, {
70
- heartbeatIntervalInSeconds: options.heartbeat,
71
- });
72
- return this.connection;
73
- }
74
- catch (e) {
75
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
76
- if (!this.retryCountBeforeExit) {
77
- console.log('Exiting....');
78
- process.exit(1);
79
- }
80
- this.retryCountBeforeExit -= 1;
81
- console.log('retryCountBeforeExit', this.retryCountBeforeExit);
82
- console.log('Reconnecting RabbitMQ', e);
83
- return this.init(options);
84
- }
85
- });
86
- }
87
- /**
88
- * Static version of createChannel
89
- */
90
- static createChannel(callback) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- return RabbitMQ.getInstance().createChannel(callback);
93
- });
94
- }
95
- createChannel(callback) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- if (!this.connection)
98
- throw Error('Connection has not been made. Call the init function first');
99
- try {
100
- const options = {
101
- json: true,
102
- };
103
- if (typeof callback == 'function')
104
- options.setup = callback;
105
- this.channel = this.connection.createChannel(options);
106
- return { data: this.channel };
107
- }
108
- catch (e) {
109
- console.error(e);
110
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
111
- return { error: e.message };
112
- }
113
- });
114
- }
115
- /**
116
- * Static version of createQueue
117
- */
118
- static createQueue(queueName_1) {
119
- return __awaiter(this, arguments, void 0, function* (queueName, options = {}) {
120
- return RabbitMQ.getInstance().createQueue(queueName, options);
121
- });
122
- }
123
- createQueue(queueName_1) {
124
- return __awaiter(this, arguments, void 0, function* (queueName, options = {}) {
125
- if (!this.connection)
126
- throw Error('Connection has not been initialized. Call the init function first');
127
- try {
128
- if (!Array.isArray(queueName)) {
129
- queueName = [queueName];
130
- }
131
- for (let name of queueName) {
132
- if (!name || name.trim() == '')
133
- return { error: 'Queue Name Cannot Be Empty' };
134
- yield this.channel.assertQueue(name, options);
135
- }
136
- return { data: true };
137
- }
138
- catch (e) {
139
- console.error(e);
140
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
141
- return { error: e.message };
142
- }
143
- });
144
- }
145
- /**
146
- * Static version of sendToQueue
147
- */
148
- static sendToQueue(channelName_1, payload_1) {
149
- return __awaiter(this, arguments, void 0, function* (channelName, payload, options = { persistent: true }) {
150
- return RabbitMQ.getInstance().sendToQueue(channelName, payload, options);
151
- });
152
- }
153
- sendToQueue(channelName_1, payload_1) {
154
- return __awaiter(this, arguments, void 0, function* (channelName, payload, options = { persistent: true }) {
155
- try {
156
- if (!payload)
157
- throw new Error('RabbitMQ: Empty Payload');
158
- return { data: yield this.channel.sendToQueue(channelName, payload, options) };
159
- }
160
- catch (e) {
161
- console.error(e);
162
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
163
- return { error: e.message };
164
- }
165
- });
166
- }
167
- /**
168
- * Static version of assertExchange
169
- */
170
- static assertExchange(exchangeName_1) {
171
- return __awaiter(this, arguments, void 0, function* (exchangeName, exchangeType = 'fanout', option = {}) {
172
- return RabbitMQ.getInstance().assertExchange(exchangeName, exchangeType, option);
173
- });
174
- }
175
- /**
176
- *
177
- * @param {string} exchangeName
178
- * @param {string} exchangeType (fanout, direct, topic)
179
- * @param {Object} option
180
- * @return {Promise<{error: *}|{data: ({data}|{error: *})}>}
181
- */
182
- assertExchange(exchangeName_1) {
183
- return __awaiter(this, arguments, void 0, function* (exchangeName, exchangeType = 'fanout', option = {}) {
184
- try {
185
- return { data: yield this.channel.assertExchange(exchangeName, exchangeType, option) };
186
- }
187
- catch (e) {
188
- console.error(e);
189
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
190
- return { error: e.message };
191
- }
192
- });
193
- }
194
- /**
195
- * Static version of assertQueue
196
- */
197
- static assertQueue(exchangeName_1) {
198
- return __awaiter(this, arguments, void 0, function* (exchangeName, queueName = '', bindKey = '', queueOption = {}) {
199
- return RabbitMQ.getInstance().assertQueue(exchangeName, queueName, bindKey, queueOption);
200
- });
201
- }
202
- /***
203
- *
204
- * @param {string} exchangeName
205
- * @param {string} queueName
206
- * @param {Object} queueOption
207
- * @param {string} bindKey
208
- * @return {Promise<{data: *}|{error: *}>}
209
- */
210
- assertQueue(exchangeName_1) {
211
- return __awaiter(this, arguments, void 0, function* (exchangeName, queueName = '', bindKey = '', queueOption = {}) {
212
- try {
213
- let queue = yield this.channel.assertQueue(queueName, queueOption);
214
- return { data: yield this.channel.bindQueue(queue.queue, exchangeName, bindKey) };
215
- }
216
- catch (e) {
217
- console.error(e);
218
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
219
- return { error: e.message };
220
- }
221
- });
222
- }
223
- /**
224
- * Static version of publishToExchange
225
- */
226
- static publishToExchange(exchangeName_1) {
227
- return __awaiter(this, arguments, void 0, function* (exchangeName, routeKey = '', payload) {
228
- return RabbitMQ.getInstance().publishToExchange(exchangeName, routeKey, payload);
229
- });
230
- }
231
- /**
232
- *
233
- * @param {string} exchangeName
234
- * @param {string} routeKey
235
- * @param {string} payload
236
- * @return Promise<*>
237
- */
238
- publishToExchange(exchangeName_1) {
239
- return __awaiter(this, arguments, void 0, function* (exchangeName, routeKey = '', payload) {
240
- try {
241
- return { data: yield this.channel.publish(exchangeName, routeKey, payload) };
242
- }
243
- catch (e) {
244
- console.error(e);
245
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
246
- return { error: e.message };
247
- }
248
- });
249
- }
250
- /**
251
- * Static version of listen
252
- */
253
- static listen(channelName_1) {
254
- return __awaiter(this, arguments, void 0, function* (channelName, options = {}, callback) {
255
- return RabbitMQ.getInstance().listen(channelName, options, callback);
256
- });
257
- }
258
- /**
259
- *
260
- * @param {string} channelName
261
- * @param {Object} options
262
- * @param {function} callback
263
- * @param {number} prefetch
264
- * @return {null}
265
- */
266
- listen(channelName_1) {
267
- return __awaiter(this, arguments, void 0, function* (channelName, options = {}, callback) {
268
- try {
269
- options.prefetch = options.prefetch || 1;
270
- if (typeof callback != 'function')
271
- throw new Error('Callback must be a function');
272
- const channel = yield this.connection.createChannel({
273
- setup: (channel) => {
274
- return channel.prefetch(options.prefetch);
275
- },
276
- });
277
- const context = new types_1.ContextEntity();
278
- context.broker = this;
279
- channel.consume(channelName, (payload) => {
280
- logger_1.logger.out({
281
- message: payload.content.toString(),
282
- queue: channelName,
283
- value: payload,
284
- });
285
- return callback(null, payload.content.toString(), {
286
- queue: channelName,
287
- value: payload,
288
- channel,
289
- ack: () => {
290
- channel.ack(payload);
291
- },
292
- });
293
- }, options);
294
- }
295
- catch (e) {
296
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
297
- callback(e.message);
298
- }
299
- });
300
- }
301
- /**
302
- * Static version of sendToDeadLetter
303
- */
304
- static sendToDeadLetter(deadLetterEntity) {
305
- return __awaiter(this, void 0, void 0, function* () {
306
- return RabbitMQ.getInstance().sendToDeadLetter(deadLetterEntity);
307
- });
308
- }
309
- sendToDeadLetter(deadLetterEntity) {
310
- return __awaiter(this, void 0, void 0, function* () {
311
- var _a;
312
- deadLetterEntity.deadLetterQueue = deadLetterEntity.deadLetterQueue || 'dead.letter';
313
- yield this.sendToQueue(deadLetterEntity.deadLetterQueue, {
314
- queue: deadLetterEntity.queueName,
315
- reason: ((_a = deadLetterEntity.error) === null || _a === void 0 ? void 0 : _a.message) || deadLetterEntity.error,
316
- payload: deadLetterEntity.payload,
317
- stack: deadLetterEntity.stack || new Error().stack,
318
- });
319
- logger_1.logger.out(`================ Pushed to Dead Letter Queue - ${deadLetterEntity.deadLetterQueue}===============`);
320
- });
321
- }
322
- /**
323
- * Static version of sendToRetry
324
- */
325
- static sendToRetry(retryEntity) {
326
- return __awaiter(this, void 0, void 0, function* () {
327
- return RabbitMQ.getInstance().sendToRetry(retryEntity);
328
- });
329
- }
330
- sendToRetry(retryEntity) {
331
- return __awaiter(this, void 0, void 0, function* () {
332
- retryEntity.retryQueueName = retryEntity.retryQueueName || 'retry';
333
- yield this.sendToQueue(retryEntity.retryQueueName, retryEntity);
334
- logger_1.logger.out(`================ Pushed to Retry Queue - ${retryEntity.retryQueueName} ===============`);
335
- });
336
- }
337
- /**
338
- * Static version of requeueDeadLetter
339
- */
340
- static requeueDeadLetter(deadLetterQueueName_1) {
341
- return __awaiter(this, arguments, void 0, function* (deadLetterQueueName, queueOptions = {}) {
342
- return RabbitMQ.getInstance().requeueDeadLetter(deadLetterQueueName, queueOptions);
343
- });
344
- }
345
- requeueDeadLetter(deadLetterQueueName_1) {
346
- return __awaiter(this, arguments, void 0, function* (deadLetterQueueName, queueOptions = {}) {
347
- yield this.listen(deadLetterQueueName, queueOptions, (error, message, args) => __awaiter(this, void 0, void 0, function* () {
348
- if (error) {
349
- console.log(`=================== Error from ${deadLetterQueueName} ==================`);
350
- throw Error(error);
351
- // return;
352
- }
353
- try {
354
- console.log('================== Listening =====================');
355
- let { queue, reason, payload } = JSON.parse(message);
356
- console.log('Queue', queue, reason);
357
- if (!queue)
358
- return args.channel.ack(args.raw);
359
- yield this.sendToQueue(queue, payload, { persistent: true });
360
- return args.channel.ack(args.value);
361
- }
362
- catch (e) {
363
- console.log(e, JSON.stringify(e));
364
- logger_1.logger.exception(e, { tag: 'rabbitmq' });
365
- yield this.sendToQueue(deadLetterQueueName, JSON.parse(message), { persistent: true });
366
- return args.channel.ack(args.raw);
367
- }
368
- }));
369
- });
370
- }
371
- /**
372
- * Static version of close
373
- */
374
- static close() {
375
- return RabbitMQ.getInstance().close();
376
- }
377
- close() {
378
- setTimeout(() => {
379
- if (this.connection) {
380
- console.log('Closing AMPQ Connection');
381
- try {
382
- return this.connection.close();
383
- }
384
- catch (alreadyClosed) {
385
- console.log(alreadyClosed.stackAtStateChange);
386
- }
387
- }
388
- return null;
389
- }, 5000);
390
- }
391
- }
392
- exports.RabbitMQ = RabbitMQ;
393
- //# sourceMappingURL=rabbitmq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rabbitmq.js","sourceRoot":"","sources":["../../src/brokers/rabbitmq.ts"],"names":[],"mappings":"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"}