exodus-framework 2.0.892 → 2.0.894

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.
@@ -7,17 +7,26 @@ type TStaticService<S> = NonConstructor<typeof Service> & {
7
7
  declare abstract class Service<D = any> extends Managed {
8
8
  static instance: Service;
9
9
  private eCom;
10
+ protected attemptDelay: number;
10
11
  constructor();
11
12
  static singleton<S extends Service>(this: TStaticService<S>): S;
12
13
  static getService<S extends Service>(this: TStaticService<S>): S;
13
- serviceInit(): Promise<void>;
14
- protected onServiceInit(): Promise<void>;
14
+ onServiceInit(): Promise<void>;
15
15
  protected onServiceMasterInit(): Promise<void>;
16
16
  protected onServiceClusterInit(): Promise<void>;
17
+ onStart(): Promise<boolean>;
18
+ onStartMaster(): Promise<boolean>;
19
+ onStartCluster(): Promise<boolean>;
20
+ onStartAttempt(): Promise<void>;
21
+ onStartFail(): Promise<void>;
22
+ onStartSuccessfully(): Promise<void>;
23
+ onExodusStarted(): Promise<void>;
17
24
  protected sendToServiceCluster(clusterId: number, event: string, data: D): void;
18
25
  protected sendToServiceMaster(event: string, data: D): void;
19
26
  protected onServiceMasterReceived(_worker: Worker, _eventKey: string, _data: any): void;
20
27
  protected onServiceClusterReceived(_eventKey: string, _data: any): void;
28
+ isStartFailed(): boolean;
29
+ getAttemptDelay(): number;
21
30
  }
22
31
  export default Service;
23
32
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/app/classes/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,KAAK,cAAc,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,OAAO,CAAC,GAAG;IACxD,QAAQ,CAAC,CAAC;CACX,CAAC;AAWF,uBAAe,OAAO,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,OAAO;IAC7C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,IAAI,CAA6B;;IAMzC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAEjC,CAAC;IAE3B,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAI/C,WAAW;cAsBR,aAAa;cAGb,mBAAmB;cAGnB,oBAAoB;IAIpC,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAGxE,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAIpD,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAGhF,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;CAGjE;AACD,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/app/classes/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,KAAK,cAAc,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,OAAO,CAAC,GAAG;IACxD,QAAQ,CAAC,CAAC;CACX,CAAC;AAWF,uBAAe,OAAO,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,OAAO;IAC7C,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,IAAI,CAA6B;IACzC,SAAS,CAAC,YAAY,SAAQ;;IAgB9B,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAEjC,CAAC;IAU3B,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;IAY/C,aAAa;cAyBV,mBAAmB;cASnB,oBAAoB;IAYvB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAW3B,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAGjC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAQlC,cAAc;IAMd,WAAW;IACX,mBAAmB;IAQnB,eAAe;IAW5B,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAWxE,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAapD,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAWhF,SAAS,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAWzD,aAAa,IAAI,OAAO;IAIxB,eAAe;CAGvB;AACD,eAAe,OAAO,CAAC"}
@@ -21,21 +21,49 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
21
21
  class Service extends _managed.default {
22
22
  static instance;
23
23
  eCom;
24
+ attemptDelay = 1000; // Tempo de espera para cada tentativa de inicialização
25
+
24
26
  constructor() {
25
27
  super();
26
28
  this.eCom = new _communication.default(this.constructor.name);
27
29
  }
30
+
31
+ /**
32
+ * Mesmo que getService
33
+ *
34
+ * @deprecated Use getService
35
+ * @static
36
+ * @template S
37
+ * @param {TStaticService<S>} this
38
+ * @memberof Service
39
+ */
28
40
  static singleton() {
29
41
  if (!this.instance) this.instance = new this();
30
42
  return this.instance;
31
43
  }
44
+ /**
45
+ * Obtem a instância atual deste serviço
46
+ *
47
+ * @static
48
+ * @template S
49
+ * @param {TStaticService<S>} this
50
+ * @memberof Service
51
+ */
32
52
  static getService() {
33
53
  return this.singleton();
34
54
  }
35
- async serviceInit() {
55
+
56
+ /**
57
+ * Chamado antes de onStart, serve como preparação para a inicialização do serviços
58
+ * pré fetchs e etc...
59
+ * Diferente de onStart, este é chamado apenas uma vez
60
+ *
61
+ * @public
62
+ * @memberof Service
63
+ */
64
+ async onServiceInit() {
36
65
  this.eCom.on(_service.eEventCommunication.RECEIVED_CLUSTER_MESSAGE, this.onServiceMasterReceived.bind(this));
37
66
  this.eCom.on(_service.eEventCommunication.RECEIVED_MASTER_MESSAGE, this.onServiceClusterReceived.bind(this));
38
- await this.onServiceInit();
39
67
  if (this.isMaster()) {
40
68
  await this.onServiceMasterInit();
41
69
  }
@@ -43,26 +71,130 @@ class Service extends _managed.default {
43
71
  await this.onServiceClusterInit();
44
72
  }
45
73
  }
46
- async onServiceInit() {
47
- return;
48
- }
74
+ /**
75
+ * Mesmo que onServiceInit, mas do lado do master
76
+ *
77
+ * @protected
78
+ * @memberof Service
79
+ */
49
80
  async onServiceMasterInit() {
50
81
  return;
51
82
  }
83
+ /**
84
+ * Mesmo que onServiceInit, mas do lado do cluster
85
+ *
86
+ * @protected
87
+ * @memberof Service
88
+ */
52
89
  async onServiceClusterInit() {
53
90
  return;
54
91
  }
92
+
93
+ // !future
94
+ /**
95
+ * Inicia o procedimento de inicialização do seriviço
96
+ * usado para conexões, fetchs e etc...
97
+ *
98
+ * @return {*} {Promise<boolean>}
99
+ * @memberof Service
100
+ */
101
+ async onStart() {
102
+ if (this.isMaster()) {
103
+ return this.onStartMaster();
104
+ }
105
+ if (this.isCluster()) {
106
+ return this.onStartCluster();
107
+ }
108
+ return true;
109
+ }
110
+ async onStartMaster() {
111
+ return true;
112
+ }
113
+ async onStartCluster() {
114
+ return true;
115
+ }
116
+ /**
117
+ * Quando uma nova tentativa de inicialização é executada
118
+ *
119
+ * @memberof Service
120
+ */
121
+ async onStartAttempt() {}
122
+ /**
123
+ * Executado quando a inicialização deste serviço falhar
124
+ *
125
+ * @memberof Service
126
+ */
127
+ async onStartFail() {}
128
+ async onStartSuccessfully() {}
129
+
130
+ /**
131
+ * Quando todos os serviços foram carregados
132
+ * Pode ser usado para eliminar dados utilizados na inicialização
133
+ *
134
+ * @memberof Service
135
+ */
136
+ async onExodusStarted() {}
137
+
138
+ /**
139
+ * Enviar dados para a instância deste serviço no cluster
140
+ *
141
+ * @protected
142
+ * @param {number} clusterId
143
+ * @param {string} event
144
+ * @param {D} data
145
+ * @memberof Service
146
+ */
55
147
  sendToServiceCluster(clusterId, event, data) {
56
148
  this.eCom.sendMessageToCluster(clusterId, event, data);
57
149
  }
150
+ /**
151
+ * Enviar dados para a instancia deste serviço no master
152
+ *
153
+ * @protected
154
+ * @param {string} event
155
+ * @param {D} data
156
+ * @memberof Service
157
+ */
58
158
  sendToServiceMaster(event, data) {
59
159
  this.eCom.sendMessageToMaster(event, data);
60
160
  }
161
+
162
+ /**
163
+ * Quando dados enviados do serviço no master para a instância no cluster
164
+ *
165
+ * @protected
166
+ * @param {Worker} _worker
167
+ * @param {string} _eventKey
168
+ * @param {*} _data
169
+ * @memberof Service
170
+ */
61
171
  onServiceMasterReceived(_worker, _eventKey, _data) {
62
172
  return;
63
173
  }
174
+ /**
175
+ * Quando dados enviados do serviço no cluster para a instância no master
176
+ *
177
+ * @protected
178
+ * @param {string} _eventKey
179
+ * @param {*} _data
180
+ * @memberof Service
181
+ */
64
182
  onServiceClusterReceived(_eventKey, _data) {
65
183
  return;
66
184
  }
185
+
186
+ /**
187
+ * Reporta a condição de inicialização falhou
188
+ * se verdadeiro, o Exodus irá cancelar a inicialização deste serviço e chamar onStartFail
189
+ *
190
+ * @return {*} {boolean}
191
+ * @memberof Service
192
+ */
193
+ isStartFailed() {
194
+ return false;
195
+ }
196
+ getAttemptDelay() {
197
+ return this.attemptDelay;
198
+ }
67
199
  }
68
200
  var _default = exports.default = Service;
@@ -8,6 +8,7 @@ declare class Exodus extends Managed {
8
8
  private createClusters;
9
9
  register(service: typeof Service): void;
10
10
  private initServices;
11
+ private startService;
11
12
  }
12
13
  export default Exodus;
13
14
  //# sourceMappingURL=exodus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exodus.d.ts","sourceRoot":"","sources":["../../src/app/exodus.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,OAAO,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,OAAO,YAAY,MAAM,YAAY,CAAC;AAUtC,cAAM,MAAO,SAAQ,OAAO;IAC1B,OAAO,CAAC,QAAQ,CAAY;gBAEhB,QAAQ,EAAE,YAAY;IAOrB,KAAK;IAclB,OAAO,CAAC,cAAc;IAef,QAAQ,CAAC,OAAO,EAAE,OAAO,OAAO;YAGzB,YAAY;CAgB3B;AACD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"exodus.d.ts","sourceRoot":"","sources":["../../src/app/exodus.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,OAAO,EAAE,MAAM,GAAG,CAAC;AAC1C,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,OAAO,YAAY,MAAM,YAAY,CAAC;AAUtC,cAAM,MAAO,SAAQ,OAAO;IAC1B,OAAO,CAAC,QAAQ,CAAY;gBAEhB,QAAQ,EAAE,YAAY;IAOrB,KAAK;IAelB,OAAO,CAAC,cAAc;IAef,QAAQ,CAAC,OAAO,EAAE,OAAO,OAAO;YAGzB,YAAY;YAiBZ,YAAY;CAoB3B;AACD,eAAe,MAAM,CAAC"}
package/lib/app/exodus.js CHANGED
@@ -28,12 +28,13 @@ class Exodus extends _managed.default {
28
28
  _event.default.Start();
29
29
  if (this.isMaster()) {
30
30
  this.log(`Iniciando em Master ${process.pid}`);
31
+ await this.initServices();
31
32
  this.createClusters();
32
33
  }
33
34
  if (this.isCluster()) {
34
35
  this.log(`Iniciando em Cluster ${this.getWorkId()}`);
36
+ await this.initServices();
35
37
  }
36
- this.initServices();
37
38
  }
38
39
 
39
40
  //# Cluster Management
@@ -57,14 +58,34 @@ class Exodus extends _managed.default {
57
58
  async initServices() {
58
59
  for (const service of this.services) {
59
60
  try {
60
- await service.serviceInit();
61
+ await this.startService(service);
61
62
  } catch (error) {
62
63
  new _.ErrorHandler(`Erro on starting service: ${service.constructor.name} | reason: ${error.message || 'unknow'}`, error);
63
64
  this.log('Não foi possível iniciar os serviços', 'warning');
64
- return;
65
+ return false;
65
66
  }
66
67
  }
67
68
  this.log('Serviços iniciados');
69
+ return true;
70
+ }
71
+ async startService(service) {
72
+ let starting = true;
73
+ await service.onServiceInit();
74
+ while (starting) {
75
+ if (service.isStartFailed()) {
76
+ await service.onStartFail();
77
+ starting = false;
78
+ break;
79
+ }
80
+ if (await service.onStart()) {
81
+ starting = false;
82
+ await service.onStartSuccessfully();
83
+ break;
84
+ } else {
85
+ await service.onStartAttempt();
86
+ }
87
+ await new Promise(resolve => setTimeout(() => resolve(true), service.getAttemptDelay()));
88
+ }
68
89
  }
69
90
  }
70
91
  var _default = exports.default = Exodus;
@@ -149,13 +149,13 @@ export type TMessageQueueDataMap = {
149
149
  };
150
150
  [EMessagingQueue.whatsappOnMessage]: {
151
151
  tenantId: string;
152
- message: Partial<IConversationMessage>[];
152
+ messages: Partial<IConversationMessage>[];
153
153
  chat: IConversationChat;
154
154
  contact: IConversationContact;
155
155
  };
156
156
  [EMessagingQueue.whatsappOnUpdateMessage]: {
157
157
  tenantId: string;
158
- message: Partial<IConversationMessage>;
158
+ messages: Partial<IConversationMessage>[];
159
159
  chat?: IConversationChat;
160
160
  contact?: IConversationContact;
161
161
  };
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/contracts/messaging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/contracts/messaging.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,7 @@ import { THttpResponse } from '../contracts/http';
5
5
  declare class ExpressService extends Service {
6
6
  private server;
7
7
  private mainRouter;
8
- onServiceClusterInit(): Promise<void>;
9
- createExpress(): Promise<unknown>;
8
+ onStartCluster(): Promise<boolean>;
10
9
  getHttpServer(): http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
11
10
  sendResponse(objResponse: THttpResponse, res: Response, next?: NextFunction): void;
12
11
  responseTypeMiddleware(req: Request, res: Response, next: NextFunction): void;
@@ -1 +1 @@
1
- {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/services/express.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGlE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAI7B,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGrE,cAAM,cAAe,SAAQ,OAAO;IAClC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAS;IAEd,oBAAoB;IAG3B,aAAa;IA0BnB,aAAa;IAIb,YAAY,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,YAAY;IAiC3E,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;IAMtE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAWzC,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;IAUtF,2BAA2B,QACpB,GAAG,OACH,OAAO,OACP,QAAQ,KAEV,YAAY,mBAoBf;IAEI,YAAY,CAAC,MAAM,EAAE,MAAM;IAyBjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM;CAGrC;AAED,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/services/express.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGlE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAI7B,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGrE,cAAM,cAAe,SAAQ,OAAO;IAClC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAS;IAGd,cAAc;IA0B3B,aAAa;IAIb,YAAY,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,YAAY;IAiC3E,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;IAMtE,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ;IAWzC,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY;IAUtF,2BAA2B,QACpB,GAAG,OACH,OAAO,OACP,QAAQ,KAEV,YAAY,mBAoBf;IAEI,YAAY,CAAC,MAAM,EAAE,MAAM;IAyBjC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM;CAGrC;AAED,eAAe,cAAc,CAAC"}
@@ -22,10 +22,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
22
22
  class ExpressService extends _service.default {
23
23
  server;
24
24
  mainRouter;
25
- async onServiceClusterInit() {
26
- await this.createExpress();
27
- }
28
- async createExpress() {
25
+
26
+ //!Deve ser iniciado no cluster, pois no master causa erro de port bind
27
+ async onStartCluster() {
29
28
  return new Promise(resolve => {
30
29
  if (!this.mainRouter) throw new Error('Need router'); //!sem router
31
30
 
@@ -1,6 +1,5 @@
1
1
  import { Service } from '../app';
2
2
  declare class LogService extends Service {
3
- onServiceInit(): Promise<void>;
4
3
  register(tenantId: string, data: {
5
4
  origin: string;
6
5
  action: string;
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/services/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,OAAO,EAAE,MAAM,QAAQ,CAAC;AAI/C,cAAM,UAAW,SAAQ,OAAO;IACxB,aAAa;IACb,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B;CAeJ;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/services/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,OAAO,EAAE,MAAM,QAAQ,CAAC;AAI/C,cAAM,UAAW,SAAQ,OAAO;IACxB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B;CAeJ;AAED,eAAe,UAAU,CAAC"}
@@ -10,7 +10,6 @@ var _Log = require("../models/Log");
10
10
  var _sequelize = _interopRequireDefault(require("./sequelize"));
11
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  class LogService extends _app.Service {
13
- async onServiceInit() {}
14
13
  async register(tenantId, data) {
15
14
  try {
16
15
  const Entity = await _sequelize.default.singleton().getModel(_Log.Log, tenantId);
@@ -4,15 +4,23 @@ import { TMessageQueueDataMap, TMessagingQueueEventList, TMessagingQueueHandler
4
4
  declare class RabbitMQService extends Service {
5
5
  connection: Connection;
6
6
  channel: Channel;
7
- private connectionRetries;
8
7
  private mainRouter;
9
8
  private eventCustomListeners;
9
+ private exchangeName;
10
+ private queueName;
11
+ private isReconnecting;
12
+ private isConnected;
13
+ private connectionRetries;
14
+ private connectionMaxRetries;
10
15
  onServiceClusterInit(): Promise<void>;
16
+ onStartCluster(): Promise<boolean>;
17
+ onStartAttempt(): Promise<void>;
18
+ onStartFail(): Promise<void>;
19
+ isStartFailed(): boolean;
20
+ connect(): Promise<boolean>;
11
21
  registerHandles(): Promise<void>;
12
- connect(): Promise<void>;
13
- private bindEvents;
14
- reconnect(): void;
15
- sendToQueue<K extends keyof TMessageQueueDataMap>(topic: K, data: TMessageQueueDataMap[K]): Promise<`${string}-${string}-${string}-${string}-${string}`>;
22
+ private setupErrorHandles;
23
+ sendToQueue<K extends keyof TMessageQueueDataMap>(topic: K, data: TMessageQueueDataMap[K]): Promise<false | `${string}-${string}-${string}-${string}-${string}`>;
16
24
  consumeFromQueue(msg: client.ConsumeMessage): Promise<void>;
17
25
  static registerRouter(router: TMessagingQueueEventList): void;
18
26
  onTransaction<K extends keyof TMessageQueueDataMap>(topic: K, callBack: TMessagingQueueHandler<K>): 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,EACvB,MAAM,cAAc,CAAC;AAStB,cAAM,eAAgB,SAAQ,OAAO;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,oBAAoB,CAA0D;IAGhF,oBAAoB;IAQpB,eAAe;IAiBf,OAAO;IAoBb,OAAO,CAAC,UAAU;IAUlB,SAAS;IAYH,WAAW,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAoBzF,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc;IA0BjD,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;CAkBF;AAED,eAAe,eAAe,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,EACvB,MAAM,cAAc,CAAC;AAUtB,cAAM,eAAgB,SAAQ,OAAO;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,oBAAoB,CAA0D;IAEtF,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IAE3B,oBAAoB;IAUb,cAAc;IAId,cAAc;IAId,WAAW;IAIjB,aAAa;IAIP,OAAO;IAgCP,eAAe;IAQ5B,OAAO,CAAC,iBAAiB;IAYnB,WAAW,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAoBzF,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc;IA2BjD,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;CAkBF;AAED,eAAe,eAAe,CAAC"}
@@ -9,6 +9,7 @@ var _crypto = require("crypto");
9
9
  var _app = require("../app");
10
10
  var _service = _interopRequireDefault(require("../app/classes/service"));
11
11
  var _messaging = _interopRequireDefault(require("../routes/messaging"));
12
+ var _utils = require("../utils");
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
14
  /**
14
15
  * Serviço de Mensageria
@@ -20,100 +21,119 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
20
21
  class RabbitMQService extends _service.default {
21
22
  connection;
22
23
  channel;
23
- connectionRetries;
24
24
  mainRouter;
25
25
  eventCustomListeners;
26
+ exchangeName;
27
+ queueName;
28
+ isReconnecting = false; // Flag para evitar múltiplas tentativas simultâneas de reconexão
29
+ isConnected = false; // Flag para controlar o estado da conexão
30
+ connectionRetries = 1; // quantidade de tentativas de reconexão
31
+ connectionMaxRetries = 3; // quantidade de tentativas de reconexão
26
32
 
27
- //# Initialization
28
33
  async onServiceClusterInit() {
29
- this.eventCustomListeners = new Map();
30
- this.connectionRetries = 0;
31
34
  if (!this.mainRouter) throw new Error('Need router'); //!sem router
35
+
36
+ this.exchangeName = _app.Core.settings.getMessaging().exchanges.main;
37
+ this.queueName = _app.Core.settings.getAppication().appId;
38
+ this.eventCustomListeners = new Map();
32
39
  this.mainRouter = {
33
40
  ..._messaging.default,
34
41
  ...this.mainRouter
35
42
  }; // # Register native router
36
- await this.connect();
43
+ this.attemptDelay = 5 * 1000;
37
44
  }
38
- async registerHandles() {
39
- for (const topic of Object.keys(this.mainRouter)) {
40
- await this.channel.bindQueue(_app.Core.settings.getAppication().appId, _app.Core.settings.getMessaging().exchanges.main, topic);
41
- }
42
- await this.channel.consume(_app.Core.settings.getAppication().appId, this.consumeFromQueue.bind(this), {
43
- noAck: false
44
- });
45
+ async onStartCluster() {
46
+ return this.connect();
47
+ }
48
+ async onStartAttempt() {
49
+ this.connectionRetries += 1;
50
+ }
51
+ async onStartFail() {
52
+ this.log(`Not possible to connect RabitMQ`, 'danger');
53
+ }
54
+ isStartFailed() {
55
+ return this.connectionRetries > this.connectionMaxRetries;
45
56
  }
46
57
  async connect() {
58
+ if (this.isConnected) return true;
59
+ if (this.isReconnecting) return false;
60
+ this.log(`⌛️ Connecting to Rabbit-MQ Server: ${this.connectionRetries}/${this.connectionMaxRetries}`);
61
+ this.isReconnecting = true;
47
62
  try {
48
- this.log(`⌛️ Connecting to Rabbit-MQ Server`);
49
- this.connection = await _amqplib.default.connect(`amqp://${_app.Core.settings.getMessaging().user}:${_app.Core.settings.getMessaging().pass}@${_app.Core.settings.getMessaging().host}:5672`);
50
- this.log(`✅ Rabbit MQ Connection is ready`);
63
+ const query = `amqp://${_app.Core.settings.getMessaging().user}:${_app.Core.settings.getMessaging().pass}@${_app.Core.settings.getMessaging().host}:5672`;
64
+ this.connection = await _amqplib.default.connect(query);
51
65
  this.channel = await this.connection.createChannel();
52
- await this.channel.assertExchange(_app.Core.settings.getMessaging().exchanges.main, 'topic', {
66
+ const mainExchanges = _app.Core.settings.getMessaging().exchanges.main;
67
+ await this.channel.assertExchange(mainExchanges, 'topic', {
53
68
  durable: true
54
69
  });
55
70
  await this.channel.assertQueue(_app.Core.settings.getAppication().appId, {
56
71
  durable: true
57
72
  });
58
- this.bindEvents();
59
- this.registerHandles();
60
- this.log(`🛸 Created RabbitMQ Channel successfully`);
73
+ this.isConnected = true;
74
+ this.isReconnecting = false;
61
75
  this.connectionRetries = 0;
76
+ this.setupErrorHandles();
77
+ await this.registerHandles();
78
+ this.log(`✅ Rabbit MQ Connection is ready`);
79
+ return true;
62
80
  } catch (error) {
63
- throw new _app.ErrorHandler(`Not connected to MQ Server`, error); // ! throw because starting process
81
+ (0, _utils.logger)().error(error, `Not connected to MQ Server`);
82
+ this.isReconnecting = false;
83
+ return false;
64
84
  }
65
85
  }
66
- bindEvents() {
86
+ async registerHandles() {
87
+ for (const topic of Object.keys(this.mainRouter)) {
88
+ await this.channel.bindQueue(this.queueName, this.exchangeName, topic);
89
+ }
90
+ await this.channel.consume(this.queueName, this.consumeFromQueue.bind(this), {
91
+ noAck: false
92
+ });
93
+ }
94
+ setupErrorHandles() {
67
95
  this.channel.on('error', err => {
68
96
  new _app.ErrorHandler('falha no canal rabitmq', err);
69
- this.reconnect();
97
+ this.isConnected = false;
70
98
  });
71
99
  this.channel.on('close', err => {
72
- new _app.ErrorHandler('falha no canal rabitmq', err);
73
- this.reconnect();
100
+ new _app.ErrorHandler('o canal rabitmq foi fechado', err);
101
+ this.isConnected = false;
74
102
  });
75
103
  }
76
- reconnect() {
77
- if (this.connectionRetries >= 3) {
78
- throw new Error(`Not possible to connect RabitMQ`);
79
- }
80
- setTimeout(() => {
81
- this.connectionRetries += 1;
82
- this.log('Tryning to connect RabbitMQ', 'warning');
83
- this.connect();
84
- }, 5000);
85
- }
86
104
 
87
105
  //# Common
88
106
  async sendToQueue(topic, data) {
89
107
  try {
90
- if (!this.channel) {
91
- await this.connect();
108
+ if (!this.isConnected) {
109
+ this.log('RabbitMQ is not connected. Message not sent.');
110
+ return false;
92
111
  }
93
- const transactionId = (0, _crypto.randomUUID)();
94
- this.channel.publish(_app.Core.settings.getMessaging().exchanges.main, topic, Buffer.from(JSON.stringify({
112
+ const messageId = (0, _crypto.randomUUID)();
113
+ const packeg = Buffer.from(JSON.stringify({
95
114
  data,
96
115
  serviceId: _app.Core.settings.getAppication().appId
97
- })), {
98
- messageId: transactionId,
116
+ }));
117
+ this.channel.publish(this.exchangeName, topic, packeg, {
118
+ messageId,
99
119
  persistent: true
100
120
  });
101
- return transactionId;
121
+ return messageId;
102
122
  } catch (error) {
103
123
  new _app.ErrorHandler('Houve um erro no envio de uma mensagem para o rabitmq', error);
104
124
  }
105
125
  }
106
126
  async consumeFromQueue(msg) {
127
+ if (!this.isConnected) return;
107
128
  if (!msg) {
108
- return this.log(`Invalid incoming message in`);
129
+ this.log(`Invalid incoming message in`);
130
+ return;
109
131
  }
110
132
  try {
111
133
  const topic = msg.fields.routingKey;
112
134
  const content = JSON.parse(msg.content.toString());
113
135
  const callBack = this.mainRouter[topic];
114
- if (callBack) {
115
- callBack(content.data, () => {}, content.serviceId, msg.properties.messageId);
116
- }
136
+ if (callBack) callBack(content.data, () => {}, content.serviceId, msg.properties.messageId);
117
137
  this.channel.ack(msg); //# the next function is temporary and not confirm ack
118
138
 
119
139
  if (this.eventCustomListeners.has(topic)) {
@@ -122,7 +142,7 @@ class RabbitMQService extends _service.default {
122
142
  }
123
143
  } catch (error) {
124
144
  new _app.ErrorHandler('Error on parsing message from queue', error);
125
- this.channel.nack(msg, false, false);
145
+ this.channel.nack(msg, false, true); // Reenfileira para nova tentativa
126
146
  }
127
147
  }
128
148
  static registerRouter(router) {
@@ -2,14 +2,21 @@ import Service from '../app/classes/service';
2
2
  import { RedisCache } from '../app/classes/cache';
3
3
  declare class RedisService extends Service {
4
4
  private client;
5
+ private isReconnecting;
6
+ private isConnected;
7
+ private connectionRetries;
8
+ private connectionMaxRetries;
5
9
  onServiceInit(): Promise<void>;
10
+ onStart(): Promise<boolean>;
11
+ onStartAttempt(): Promise<void>;
12
+ onStartFail(): Promise<void>;
13
+ isStartFailed(): boolean;
6
14
  private connect;
7
- disconnect(): Promise<void>;
15
+ private setupErrorHandles;
8
16
  setValue(key: string, value: string): Promise<void>;
9
17
  getValue(key: string): Promise<string | null>;
10
18
  deleteValue(key: string): Promise<void>;
11
19
  createCache<T>(key: string): RedisCache<T>;
12
- private onClientError;
13
20
  }
14
21
  export default RedisService;
15
22
  //# sourceMappingURL=redis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/services/redis.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASlD,cAAM,YAAa,SAAQ,OAAO;IAChC,OAAO,CAAC,MAAM,CAAkB;IAG1B,aAAa;IAOnB,OAAO,CAAC,OAAO;IAgBT,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGnD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGtC,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM;IAKjC,OAAO,CAAC,aAAa;CAGtB;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/services/redis.ts"],"names":[],"mappings":"AAEA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAUlD,cAAM,YAAa,SAAQ,OAAO;IAChC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IAEpB,aAAa;IAIb,OAAO;IAIP,cAAc;IAId,WAAW;IAIjB,aAAa;YAIN,OAAO;IA4BrB,OAAO,CAAC,iBAAiB;IAQnB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGnD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7C,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGtC,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM;CAGlC;AAED,eAAe,YAAY,CAAC"}
@@ -8,6 +8,7 @@ var _redis = require("redis");
8
8
  var _app = require("../app");
9
9
  var _service = _interopRequireDefault(require("../app/classes/service"));
10
10
  var _cache = require("../app/classes/cache");
11
+ var _utils = require("../utils");
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
13
  /**
13
14
  * Serviço de cache
@@ -18,29 +19,56 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
18
19
  */
19
20
  class RedisService extends _service.default {
20
21
  client;
22
+ isReconnecting = false; // Flag para evitar múltiplas tentativas simultâneas de reconexão
23
+ isConnected = false; // Flag para controlar o estado da conexão
24
+ connectionRetries = 1; // quantidade de tentativas de reconexão
25
+ connectionMaxRetries = 3; // quantidade de tentativas de reconexão
21
26
 
22
- //* Initialization
23
27
  async onServiceInit() {
24
- this.client = (0, _redis.createClient)({
25
- url: `redis://${_app.Core.settings.getCache().host}:${_app.Core.settings.getCache().port}`,
26
- password: _app.Core.settings.getCache().password
27
- });
28
- await this.connect();
28
+ this.attemptDelay = 5 * 1000;
29
+ }
30
+ async onStart() {
31
+ return this.connect();
32
+ }
33
+ async onStartAttempt() {
34
+ this.connectionRetries += 1;
35
+ }
36
+ async onStartFail() {
37
+ this.log(`Not possible to connect Redis`, 'danger');
38
+ }
39
+ isStartFailed() {
40
+ return this.connectionRetries > this.connectionMaxRetries;
29
41
  }
30
- connect() {
31
- this.client.on('error', this.onClientError.bind(this));
32
- return new Promise((resolve, reject) => {
33
- this.client.connect().then(() => {
34
- this.log('Redis client connected.', 'success');
35
- resolve(true);
36
- }).catch(reason => {
37
- new _app.ErrorHandler('Error on conecting Redis', reason);
38
- reject(reason);
42
+ async connect() {
43
+ if (this.isConnected) return true;
44
+ if (this.isReconnecting) return false;
45
+ this.log(`⌛️ Connecting to Redis Server: ${this.connectionRetries}/${this.connectionMaxRetries}`);
46
+ this.isReconnecting = true;
47
+ try {
48
+ const queryConnect = `redis://${_app.Core.settings.getCache().host}:${_app.Core.settings.getCache().port}`;
49
+ const password = _app.Core.settings.getCache().password;
50
+ this.client = (0, _redis.createClient)({
51
+ url: queryConnect,
52
+ password
39
53
  });
40
- });
54
+ await this.client.connect();
55
+ this.isConnected = true;
56
+ this.isReconnecting = false;
57
+ this.connectionRetries = 0;
58
+ this.setupErrorHandles();
59
+ this.log(`✅ Redis Connection is ready`);
60
+ return true;
61
+ } catch (error) {
62
+ (0, _utils.logger)().error(error, `Not connected to Redis Server`);
63
+ this.isReconnecting = false;
64
+ return false;
65
+ }
41
66
  }
42
- async disconnect() {
43
- await this.client.quit();
67
+ setupErrorHandles() {
68
+ this.client.on('error', err => {
69
+ new _app.ErrorHandler('falha na conexão Redis', err);
70
+ this.isConnected = false;
71
+ });
44
72
  }
45
73
 
46
74
  //* Common
@@ -57,10 +85,5 @@ class RedisService extends _service.default {
57
85
  createCache(key) {
58
86
  return new _cache.RedisCache(this.client, key);
59
87
  }
60
-
61
- //* Events
62
- onClientError(err) {
63
- new _app.ErrorHandler('Error on init redis client', err);
64
- }
65
88
  }
66
89
  var _default = exports.default = RedisService;
@@ -10,8 +10,17 @@ declare class SequelizeService extends Service {
10
10
  connections: Map<string, Sequelize>;
11
11
  initializedModels: Map<string, ModelStatic<any>>;
12
12
  relations: Map<string, EnvDBHost>;
13
+ private connectionRetries;
14
+ private connectionMaxRetries;
15
+ private isReconnecting;
16
+ private isMasterConnected;
17
+ private isServiceConnected;
13
18
  onServiceInit(): Promise<void>;
14
- connectDatabases(): Promise<unknown>;
19
+ onStart(): Promise<boolean>;
20
+ onStartAttempt(): Promise<void>;
21
+ onStartFail(): Promise<void>;
22
+ isStartFailed(): boolean;
23
+ connectDatabases(): Promise<boolean>;
15
24
  getDB(tenantId: string): Promise<false | Sequelize>;
16
25
  createDB(hostUuid: string, name: string): Promise<boolean>;
17
26
  hasDB(hostUuid: string, name: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"sequelize.d.ts","sourceRoot":"","sources":["../../src/services/sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAsB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAKpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUlD,cAAM,gBAAiB,SAAQ,OAAO;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAG5B,aAAa;IASb,gBAAgB;IA8BhB,KAAK,CAAC,QAAQ,EAAE,MAAM;IActB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IA6BvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAqBpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiBvC,MAAM,CAAC,QAAQ,EAAE,MAAM;IA6BvB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;IAkBpE,SAAS,CAAC,QAAQ,EAAE,MAAM;IAK1B,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,SAAI;IAe/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IA2CpD,cAAc,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB;IA4BK,WAAW,CAAC,QAAQ,EAAE,MAAM;IAe5B,QAAQ,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAC1C,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAW1B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE;CAGxD;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"sequelize.d.ts","sourceRoot":"","sources":["../../src/services/sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAsB,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAgB,MAAM,WAAW,CAAC;AAKpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUlD,cAAM,gBAAiB,SAAQ,OAAO;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAAS;IAG7B,aAAa;IAcN,OAAO;IAIP,cAAc;IAId,WAAW;IAIjB,aAAa;IAId,gBAAgB;IA+BhB,KAAK,CAAC,QAAQ,EAAE,MAAM;IActB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IA6BvC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAqBpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAiBvC,MAAM,CAAC,QAAQ,EAAE,MAAM;IA6BvB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS;IAkBpE,SAAS,CAAC,QAAQ,EAAE,MAAM;IAK1B,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,SAAI;IAe/B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IA2CpD,cAAc,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB;IA4BK,WAAW,CAAC,QAAQ,EAAE,MAAM;IAe5B,QAAQ,CAAC,CAAC,SAAS,YAAY,CAAC,KAAK,CAAC,EAC1C,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAW1B,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE;CAGxD;AAED,eAAe,gBAAgB,CAAC"}
@@ -27,40 +27,61 @@ class SequelizeService extends _service.default {
27
27
  connections;
28
28
  initializedModels;
29
29
  relations;
30
+ connectionRetries = 1; // quantidade de tentativas de reconexão
31
+ connectionMaxRetries = 3; // quantidade de tentativas de reconexão
32
+ isReconnecting = false; // Flag para evitar múltiplas tentativas simultâneas de reconexão
33
+ isMasterConnected = false; // Flag para controlar o estado da conexão
34
+ isServiceConnected = false; // Flag para controlar o estado da conexão
30
35
 
31
36
  //# Initialization
32
37
  async onServiceInit() {
38
+ if (!this.models) throw new Error('Models are requireds! Call registerModels(modelsArray)');
33
39
  this.serviceDB = _database.serviceDB;
34
40
  this.masterDB = _database.masterDB;
35
41
  this.connections = new Map();
36
42
  this.initializedModels = new Map();
37
43
  this.relations = new Map();
38
- await this.connectDatabases();
44
+ this.models = [...this.models, ..._models.NativeModels];
45
+ this.attemptDelay = 5 * 1000;
46
+ }
47
+ async onStart() {
48
+ return this.connectDatabases();
49
+ }
50
+ async onStartAttempt() {
51
+ this.connectionRetries += 1;
52
+ }
53
+ async onStartFail() {
54
+ this.log(`Not possible to connect database`, 'danger');
55
+ }
56
+ isStartFailed() {
57
+ return this.connectionRetries > this.connectionMaxRetries;
39
58
  }
40
59
  async connectDatabases() {
41
- if (!this.models) throw new Error('Models are requireds! Call registerModels(modelsArray)');
42
-
43
- // #Include native models
44
- this.models = [...this.models, ..._models.NativeModels];
45
- return new Promise((resolve, reject) => {
46
- this.masterDB.sync({
47
- force: false
48
- }).then(() => {
60
+ if (this.isMasterConnected && this.isServiceConnected) return true;
61
+ if (this.isReconnecting) return false;
62
+ this.log(`⌛️ Connecting Sequelize to database: ${this.connectionRetries}/${this.connectionMaxRetries}`);
63
+ try {
64
+ if (!this.isMasterConnected) {
65
+ await this.masterDB.sync({
66
+ force: false
67
+ });
68
+ this.isMasterConnected = true;
49
69
  this.log('✅ Connected master database sucessfully', 'success');
50
- this.serviceDB.sync({
70
+ }
71
+ if (!this.isServiceConnected) {
72
+ await this.serviceDB.sync({
51
73
  force: false
52
- }).then(() => {
53
- this.log('✅ Connected service database sucessfully', 'success');
54
- resolve(true);
55
- }).catch(reason => {
56
- new _app.ErrorHandler('Não foi possível inicializar a conexão com o ServiceDB', reason);
57
- reject(reason);
58
74
  });
59
- }).catch(reason => {
60
- new _app.ErrorHandler('Não foi possível inicializar a conexão com MasterDB', reason);
61
- reject(reason);
62
- });
63
- });
75
+ this.isServiceConnected = true;
76
+ this.log(' Connected service database sucessfully', 'success');
77
+ }
78
+ this.log('✅ All databases connecteds sucessfully', 'success');
79
+ return true;
80
+ } catch (error) {
81
+ (0, _logger.default)().error(error, `Not connected Sequelize to database`);
82
+ this.isReconnecting = false;
83
+ return false;
84
+ }
64
85
  }
65
86
 
66
87
  // #Database
@@ -9,7 +9,8 @@ declare class SocketIOService extends Service {
9
9
  private mainRouter;
10
10
  private eventhandlers;
11
11
  private clientHandlers;
12
- onServiceClusterInit(): Promise<void>;
12
+ onClusterInit(): void;
13
+ onStartCluster(): Promise<boolean>;
13
14
  private onConnection;
14
15
  private bindEvents;
15
16
  createSocket(app: HttpServer, cors?: CorsOptions | CorsOptionsDelegate): void;
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/services/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAMpE,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AAStE,cAAM,eAAgB,SAAQ,OAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,cAAc,CAAsC;IAEtD,oBAAoB;YAYZ,YAAY;IAsC1B,OAAO,CAAC,UAAU;IAgCX,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,WAAW,GAAG,mBAAqC;IAM9F,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;IAGlD,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,mBAAmB,CAAC,EAAE;YAIxD,gBAAgB;CAY/B;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/services/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAMpE,OAAO,mBAAmB,MAAM,qCAAqC,CAAC;AAUtE,cAAM,eAAgB,SAAQ,OAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,cAAc,CAAsC;IAErD,aAAa;IAIP,cAAc;YAeb,YAAY;IAsC1B,OAAO,CAAC,UAAU;IAgCX,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,WAAW,GAAG,mBAAqC;IAM9F,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE;IAIlD,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,mBAAmB,CAAC,EAAE;YAIxD,gBAAgB;CAY/B;AAED,eAAe,eAAe,CAAC"}
@@ -10,6 +10,7 @@ var _controller = require("../app/controller");
10
10
  var _core = require("../contracts/core");
11
11
  var _authentication = require("../middlewares/authentication");
12
12
  var _express = _interopRequireDefault(require("./express"));
13
+ var _utils = require("../utils");
13
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
15
  /**
15
16
  * Serviço de gerênciamento de comunicação WS/WSS Socket
@@ -23,16 +24,22 @@ class SocketIOService extends _service.default {
23
24
  mainRouter;
24
25
  eventhandlers;
25
26
  clientHandlers = [];
26
- async onServiceClusterInit() {
27
- if (!this.mainRouter) throw new Error('Need router'); //!sem router
28
-
29
- this.createSocket(_express.default.singleton().getHttpServer());
27
+ onClusterInit() {
30
28
  this.eventhandlers = new Map();
31
- // this.clientHandlers = [];
29
+ }
30
+ async onStartCluster() {
31
+ if (!this.mainRouter) throw new Error('Need router'); //!sem router
32
32
 
33
- await this.registerHandlers();
34
- this.server.on('connection', this.onConnection.bind(this));
35
- this.log('Socket server created');
33
+ try {
34
+ this.createSocket(_express.default.getService().getHttpServer());
35
+ await this.registerHandlers();
36
+ this.server.on('connection', this.onConnection.bind(this));
37
+ this.log('✅ Socket server created');
38
+ return true;
39
+ } catch (error) {
40
+ (0, _utils.logger)().error(error, `Not connected to SocketIO`);
41
+ return false;
42
+ }
36
43
  }
37
44
  async onConnection(socket) {
38
45
  this.log(`${socket.id} conectado`);
@@ -2,10 +2,7 @@ import TaskServiceBase from '../TaskServiceBase';
2
2
  import QueueTask from './QueueTask';
3
3
  declare class QueueTaskService extends TaskServiceBase<typeof QueueTask<any>> {
4
4
  private connection;
5
- private jobsPath;
6
- onServiceInit(): Promise<void>;
7
- private importAllJobs;
8
- private processAllJobs;
5
+ onStart(): Promise<boolean>;
9
6
  startTask(task: QueueTask<any>): Promise<void>;
10
7
  }
11
8
  export default QueueTaskService;
@@ -1 +1 @@
1
- {"version":3,"file":"QueueService.d.ts","sourceRoot":"","sources":["../../../../src/services/task/queue/QueueService.ts"],"names":[],"mappings":"AAIA,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,SAAS,MAAM,aAAa,CAAC;AAIpC,cAAM,gBAAiB,SAAQ,eAAe,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACnE,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,QAAQ,CAAM;IAEhB,aAAa;YAmBL,aAAa;YAUb,cAAc;IAMf,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;CAuB5C;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"QueueService.d.ts","sourceRoot":"","sources":["../../../../src/services/task/queue/QueueService.ts"],"names":[],"mappings":"AAIA,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,SAAS,MAAM,aAAa,CAAC;AAGpC,cAAM,gBAAiB,SAAQ,eAAe,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACnE,OAAO,CAAC,UAAU,CAAoB;IAEhC,OAAO;IAiBA,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;CAuB5C;AAED,eAAe,gBAAgB,CAAC"}
@@ -5,47 +5,25 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _bullmq = require("bullmq");
8
- var _fs = require("fs");
9
8
  var _app = require("../../../app");
10
- var _TaskServiceBase = _interopRequireDefault(require("../TaskServiceBase"));
11
9
  var _core = require("../../../contracts/core");
10
+ var _TaskServiceBase = _interopRequireDefault(require("../TaskServiceBase"));
12
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
12
  //* Queue
14
13
  class QueueTaskService extends _TaskServiceBase.default {
15
14
  connection;
16
- jobsPath = '';
17
- async onServiceInit() {
15
+ async onStart() {
18
16
  this.connection = {
19
17
  host: _app.Core.settings.getCache().host,
20
18
  port: Number(_app.Core.settings.getCache().port),
21
19
  password: _app.Core.settings.getCache().password
22
20
  };
23
- this.log('Initializing jobs...', 'info');
24
- await this.processAllJobs();
25
- this.log('All jobs initializeds...', 'info');
26
- }
27
-
28
- /**
29
- * Importa os arquivos de task
30
- * !no modo cluster, é lançado erro PIPE após todos os clusters tentar acessar o mesmo arquivo
31
- * @deprecated
32
- * @private
33
- * @memberof QueueTaskService
34
- */
35
- async importAllJobs() {
36
- if (!(0, _fs.existsSync)(this.jobsPath)) (0, _fs.mkdirSync)(this.jobsPath, {
37
- recursive: true
38
- });
39
- for (const handlerFile of (0, _fs.readdirSync)(this.jobsPath)) {
40
- const job = require(`${this.jobsPath}/${handlerFile}`).default;
41
- const jobInstance = job.singleton();
42
- this.tasks.push(jobInstance);
43
- }
44
- }
45
- async processAllJobs() {
21
+ this.log('Initializing jobs', 'info');
46
22
  for (const task of this.tasks) {
47
23
  this.startTask(task.singleton());
48
24
  }
25
+ this.log('All jobs initializeds', 'info');
26
+ return true;
49
27
  }
50
28
  async startTask(task) {
51
29
  task.taskInit();
@@ -1,10 +1,7 @@
1
1
  import TaskServiceBase from '../TaskServiceBase';
2
2
  import ScheduleTask from './SchedulerTask';
3
3
  declare class SchedulerTaskService extends TaskServiceBase<typeof ScheduleTask> {
4
- private jobsPath;
5
- onServiceInit(): Promise<void>;
6
- private importAllJobs;
7
- private processAllJobs;
4
+ onStart(): Promise<boolean>;
8
5
  private startTask;
9
6
  }
10
7
  export default SchedulerTaskService;
@@ -1 +1 @@
1
- {"version":3,"file":"SchedulerService.d.ts","sourceRoot":"","sources":["../../../../src/services/task/scheduler/SchedulerService.ts"],"names":[],"mappings":"AAGA,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAG3C,cAAM,oBAAqB,SAAQ,eAAe,CAAC,OAAO,YAAY,CAAC;IACrE,OAAO,CAAC,QAAQ,CAAM;IAEhB,aAAa;YAaL,aAAa;YAcb,cAAc;YAOd,SAAS;CAcxB;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"SchedulerService.d.ts","sourceRoot":"","sources":["../../../../src/services/task/scheduler/SchedulerService.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAE3C,cAAM,oBAAqB,SAAQ,eAAe,CAAC,OAAO,YAAY,CAAC;IAC/D,OAAO;YAYC,SAAS;CAcxB;AAED,eAAe,oBAAoB,CAAC"}
@@ -4,46 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _fs = require("fs");
8
7
  var _nodeSchedule = require("node-schedule");
9
- var _app = require("../../../app");
10
- var _TaskServiceBase = _interopRequireDefault(require("../TaskServiceBase"));
11
8
  var _core = require("../../../contracts/core");
9
+ var _TaskServiceBase = _interopRequireDefault(require("../TaskServiceBase"));
12
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
11
  class SchedulerTaskService extends _TaskServiceBase.default {
14
- jobsPath = '';
15
- async onServiceInit() {
12
+ async onStart() {
16
13
  this.log('Initializing jobs...', 'info');
17
- await this.processAllJobs();
18
- this.log('All jobs initializeds...', 'info');
19
- }
20
-
21
- /**
22
- * Importa os arquivos de task
23
- * !no modo cluster, é lançado erro PIPE após todos os clusters tentar acessar o mesmo arquivo
24
- * @deprecated
25
- * @private
26
- * @memberof QueueTaskService
27
- */
28
- async importAllJobs() {
29
- if (!(0, _fs.existsSync)(this.jobsPath)) (0, _fs.mkdirSync)(this.jobsPath, {
30
- recursive: true
31
- });
32
- for (const handlerFile of (0, _fs.readdirSync)(this.jobsPath)) {
33
- try {
34
- const job = require(`${this.jobsPath}/${handlerFile}`).default;
35
- const jobInstance = job.singleton();
36
- this.tasks.push(jobInstance);
37
- } catch (error) {
38
- new _app.ErrorHandler(`Falha ao iniciar um ou mais jobs: ${handlerFile}`, error);
39
- }
40
- }
41
- }
42
- async processAllJobs() {
43
14
  for (const task of this.tasks) {
44
15
  const intanceTask = task.singleton();
45
16
  this.startTask(intanceTask);
46
17
  }
18
+ this.log('All jobs initializeds...', 'info');
19
+ return true;
47
20
  }
48
21
  async startTask(task) {
49
22
  task.taskInit();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "exodus-framework",
3
- "version": "2.0.892",
3
+ "version": "2.0.894",
4
4
  "description": "Exodus Framework",
5
5
  "author": "jhownpaixao",
6
6
  "license": "ISC",