@axinom/mosaic-message-bus 0.37.3-rc.1 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/broker.d.ts CHANGED
@@ -3,6 +3,18 @@ import { Connection } from 'amqplib';
3
3
  import { BrokerConfig, PublicationSession, SubscriberSessionAsPromised, SubscriptionConfig } from 'rascal';
4
4
  import { MessageHandler } from './message-handler';
5
5
  import { MessageEnvelopeOverrides, MessagePublicationConfig, OnMessageMiddleware, SigningDetails } from './types';
6
+ export interface ConnectionDetails {
7
+ connectionUrl: string;
8
+ vhost: string;
9
+ }
10
+ export interface BrokerErrorEvent {
11
+ error: Error;
12
+ connection: ConnectionDetails;
13
+ }
14
+ export interface BrokerReconnectedEvent {
15
+ connection: ConnectionDetails;
16
+ disconnectedDurationInMilliseconds: number;
17
+ }
6
18
  /**
7
19
  * A wrapper around rascal broker to be used by Mosaic services.
8
20
  */
@@ -14,6 +26,8 @@ export declare class BrokerProxy {
14
26
  private subscriptions;
15
27
  private publications;
16
28
  private isConnectedToBroker;
29
+ private eventEmitter;
30
+ private lastDisconnectedAt?;
17
31
  private constructor();
18
32
  private attachBrokerHandlers;
19
33
  private onBrokerVhostInitialized;
@@ -113,5 +127,33 @@ export declare class BrokerProxy {
113
127
  * Returns a boolean indicating if the service is connected to the Broker.
114
128
  */
115
129
  isConnected(): boolean;
130
+ /**
131
+ * Subscribes to the 'error' event, which is emitted when the broker encounters an error.
132
+ * @param event - The event name ('error').
133
+ * @param listener - A callback function that receives a `BrokerErrorEvent` object containing:
134
+ * - `error`: The error that occurred.
135
+ * - `connection`: Details about the connection where the error occurred.
136
+ */
137
+ on(event: 'error', listener: (data: BrokerErrorEvent) => void): void;
138
+ /**
139
+ * Subscribes to the 'reconnected' event, which is emitted when the broker successfully reconnects.
140
+ * @param event - The event name ('reconnected').
141
+ * @param listener - A callback function that receives a `BrokerReconnectedEvent` object containing:
142
+ * - `connection`: Details about the re-established connection.
143
+ * - `disconnectedDurationInMilliseconds`: The duration (in milliseconds) for which the connection was lost.
144
+ */
145
+ on(event: 'reconnected', listener: (data: BrokerReconnectedEvent) => void): void;
146
+ /**
147
+ * Unsubscribes from the 'error' event.
148
+ * @param event - The event name ('error').
149
+ * @param listener - The callback function to remove.
150
+ */
151
+ off(event: 'error', listener: (data: BrokerErrorEvent) => void): void;
152
+ /**
153
+ * Unsubscribes from the 'reconnected' event.
154
+ * @param event - The event name ('reconnected').
155
+ * @param listener - The callback function to remove.
156
+ */
157
+ off(event: 'reconnected', listener: (data: BrokerReconnectedEvent) => void): void;
116
158
  }
117
159
  //# sourceMappingURL=broker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,YAAY,EACZ,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAEnB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,EACf,MAAM,SAAS,CAAC;AAkBjB;;GAEG;AACH,qBAAa,WAAW;IAUpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY,CAAC;IAXvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IAErC,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,YAAY,CAAkC;IAGtD,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,OAAO;IAQP,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,wBAAwB;IAShC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;YAQP,eAAe;IAa7B,OAAO,CAAC,cAAc;IAUtB;;OAEG;WACiB,MAAM,CACxB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACxC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC;IASvB;;;;OAIG;IACU,iBAAiB,CAAC,QAAQ,EACrC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,EACjC,UAAU,GAAE,mBAAmB,EAAO,GACrC,OAAO,CAAC,2BAA2B,CAAC;IAKvC;;;;;;;;;;OAUG;IACU,OAAO,CAAC,CAAC,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EACpD,OAAO,EAAE,CAAC,EACV,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAS9B;;;;;;;;OAQG;IACU,cAAc,CAAC,CAAC,EAC3B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EACpD,OAAO,EAAE,CAAC,EACV,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,aAAa,CAAC,EAAE,wBAAwB,GACvC,OAAO,CAAC,kBAAkB,CAAC;IAS9B;;;;;;;;OAQG;IACU,YAAY,CAAC,CAAC,EACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EACpD,OAAO,EAAE,CAAC,EACV,iBAAiB,CAAC,EAAE,wBAAwB,EAC5C,WAAW,CAAC,EAAE,wBAAwB,GACrC,OAAO,CAAC,kBAAkB,CAAC;IAU9B;;;;OAIG;IACU,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAItD;;;OAGG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC;;;OAGG;IACU,SAAS,CACpB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,2BAA2B,CAAC;IAIvC;;OAEG;IACI,WAAW,IAAI,OAAO;CAG9B"}
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
package/dist/broker.js CHANGED
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.BrokerProxy = void 0;
7
+ const events_1 = require("events");
7
8
  const rascal_1 = require("rascal");
8
9
  const common_1 = require("./common");
9
10
  const publication_1 = __importDefault(require("./publication"));
@@ -22,6 +23,7 @@ class BrokerProxy {
22
23
  // Rascal always establishes a connection during the BrokerProxy creation, and the service itself will
23
24
  // fail if the broker connection fails. If this code is run, it's ensured the service has connected to the Broker.
24
25
  this.isConnectedToBroker = true;
26
+ this.eventEmitter = new events_1.EventEmitter();
25
27
  this.attachBrokerHandlers();
26
28
  }
27
29
  attachBrokerHandlers() {
@@ -33,6 +35,14 @@ class BrokerProxy {
33
35
  this.broker.on('ready', this.onBrokerReady.bind(this));
34
36
  }
35
37
  onBrokerVhostInitialized(connection) {
38
+ const now = new Date();
39
+ const disconnectedDurationInMilliseconds = this.lastDisconnectedAt
40
+ ? now.getTime() - this.lastDisconnectedAt.getTime()
41
+ : 0;
42
+ this.eventEmitter.emit('reconnected', {
43
+ connection,
44
+ disconnectedDurationInMilliseconds,
45
+ });
36
46
  this.isConnectedToBroker = true;
37
47
  this.logger.debug({
38
48
  context: 'BrokerVhostInitialized',
@@ -41,6 +51,8 @@ class BrokerProxy {
41
51
  });
42
52
  }
43
53
  onBrokerError(error, connection) {
54
+ this.lastDisconnectedAt = new Date();
55
+ this.eventEmitter.emit('error', { error, connection });
44
56
  this.isConnectedToBroker = false;
45
57
  this.logger.error(error, {
46
58
  context: 'BrokerError',
@@ -207,6 +219,16 @@ class BrokerProxy {
207
219
  isConnected() {
208
220
  return this.isConnectedToBroker;
209
221
  }
222
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
+ on(...args) {
224
+ const [event, listener] = args;
225
+ this.eventEmitter.on(event, listener);
226
+ }
227
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
228
+ off(...args) {
229
+ const [event, listener] = args;
230
+ this.eventEmitter.off(event, listener);
231
+ }
210
232
  }
211
233
  exports.BrokerProxy = BrokerProxy;
212
234
  //# sourceMappingURL=broker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":";;;;;;AAGA,mCAAsC;AACtC,mCAOgB;AAChB,qCAAuE;AAEvE,gEAAwC;AACxC,kEAA0C;AAkC1C;;GAEG;AACH,MAAa,WAAW;IAWtB,YACU,MAAwB,EACxB,MAAc,EACd,YAA6B;QAF7B,WAAM,GAAN,MAAM,CAAkB;QACxB,WAAM,GAAN,MAAM,CAAQ;QACd,iBAAY,GAAZ,YAAY,CAAiB;QAZvC,8DAA8D;QACtD,kBAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;QACrD,iBAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;QACtD,sGAAsG;QACtG,kHAAkH;QAC1G,wBAAmB,GAAG,IAAI,CAAC;QAC3B,iBAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;QAQxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,MAAM,CAAC,EAAE,CACZ,mBAAmB,EACnB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,wBAAwB,CAAC,UAA6B;QAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,kCAAkC,GAAG,IAAI,CAAC,kBAAkB;YAChE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACnD,CAAC,CAAC,CAAC,CAAC;QAEN,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE;YACpC,UAAU;YACV,kCAAkC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE,UAAU,UAAU,CAAC,KAAK,4BAA4B,UAAU,CAAC,aAAa,GAAG;YAC1F,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,KAAY,EAAE,UAA6B;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACvB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,UAAU,UAAU,CAAC,KAAK,mCAAmC,UAAU,CAAC,aAAa,GAAG;YACjG,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,UAA6B;QACnE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,UAAU,UAAU,CAAC,KAAK,kCAAkC,UAAU,CAAC,aAAa,aAAa,MAAM,EAAE;YAClH,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CACvB,MAAc,EACd,UAA6B;QAE7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,UAAU,UAAU,CAAC,KAAK,oCAAoC,UAAU,CAAC,aAAa,aAAa,MAAM,EAAE;YACpH,OAAO,EAAE,EAAE,UAAU,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAkB;QACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,UAAU,KAAK,CAAC,KAAK,mBAAmB,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,gBAAgB,KAAK,CAAC,SAAS,GAAG;YACtK,OAAO,EAAE,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,KAAkB;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,SAAS,KAAK,CAAC,KAAK,+BAA+B,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,gBAAgB,KAAK,CAAC,SAAS,GAAG;YACjL,OAAO,EAAE,EAAE,KAAK,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,OAAiC,EACjC,aAAoC,EAAE;QAEtC,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,CAAC,GAAG,EAAE;YACR,GAAG,GAAG,IAAI,sBAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SAClD;QACD,OAAO,GAA6B,CAAC;IACvC,CAAC;IAEO,cAAc,CAAC,WAAiC;QACtD,MAAM,GAAG,GAAG,IAAA,8BAAqB,EAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,IAAI,qBAAW,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;SACzC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK,CAAC,MAAM,CACxB,MAAoB,EACpB,MAAc,EACd,aAAsC,EAAE,EACxC,OAAwB;QAExB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,GAAG,GAAG,IAAA,0BAAiB,EAAC,MAAM,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,yBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SAC1D;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,iBAAiB,CAC5B,OAAiC,EACjC,aAAoC,EAAE;QAEtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACrE,OAAO,YAAY,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,OAAO,CAClB,WAAmB,EACnB,IAAoD,EACpD,OAAU,EACV,iBAA4C,EAC5C,OAAkC;QAElC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CACtC,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,cAAc,CACzB,WAAmB,EACnB,IAAoD,EACpD,OAAU,EACV,iBAA4C,EAC5C,aAAwC;QAExC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CACtC,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,aAAa,CACd,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,YAAY,CACvB,WAAmB,EACnB,IAAoD,EACpD,OAAU,EACV,iBAA4C,EAC5C,WAAsC;QAEtC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CACtC,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,GAAW;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,IAAI;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAK;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,SAAS,CACpB,GAAW,EACX,SAA8B;QAE9B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAuBD,8DAA8D;IACvD,EAAE,CAAC,GAAG,IAAW;QACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAmBD,8DAA8D;IACvD,GAAG,CAAC,GAAG,IAAW;QACvB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AArVD,kCAqVC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axinom/mosaic-message-bus",
3
- "version": "0.37.3-rc.1",
3
+ "version": "0.38.0",
4
4
  "description": "Messaging library for Axinom Mosaic services",
5
5
  "author": "Axinom",
6
6
  "license": "PROPRIETARY",
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@axinom/mosaic-message-bus-abstractions": "^0.24.0",
35
- "@axinom/mosaic-service-common": "^0.59.3-rc.1",
35
+ "@axinom/mosaic-service-common": "^0.59.3",
36
36
  "amqplib": "^0.10.3",
37
37
  "dotenv": "^8.2.0",
38
38
  "graphql": "^15.4.0",
@@ -65,5 +65,5 @@
65
65
  "publishConfig": {
66
66
  "access": "public"
67
67
  },
68
- "gitHead": "78c7e35d6f1fc1d2283d846f7d4042b22e796548"
68
+ "gitHead": "6632b19e6b9345ce2c7eae9abccfd9a3c1b1e50c"
69
69
  }
package/src/broker.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-empty-function */
2
2
  import { Logger } from '@axinom/mosaic-service-common';
3
3
  import { Connection } from 'amqplib';
4
+ import { EventEmitter } from 'events';
4
5
  import {
5
6
  BrokerAsPromised,
6
7
  BrokerConfig,
@@ -20,7 +21,7 @@ import {
20
21
  SigningDetails,
21
22
  } from './types';
22
23
 
23
- interface ConnectionDetails {
24
+ export interface ConnectionDetails {
24
25
  connectionUrl: string;
25
26
  vhost: string;
26
27
  }
@@ -36,6 +37,16 @@ interface BrokerStats {
36
37
  max: number;
37
38
  }
38
39
 
40
+ export interface BrokerErrorEvent {
41
+ error: Error;
42
+ connection: ConnectionDetails;
43
+ }
44
+
45
+ export interface BrokerReconnectedEvent {
46
+ connection: ConnectionDetails;
47
+ disconnectedDurationInMilliseconds: number;
48
+ }
49
+
39
50
  /**
40
51
  * A wrapper around rascal broker to be used by Mosaic services.
41
52
  */
@@ -47,6 +58,8 @@ export class BrokerProxy {
47
58
  // Rascal always establishes a connection during the BrokerProxy creation, and the service itself will
48
59
  // fail if the broker connection fails. If this code is run, it's ensured the service has connected to the Broker.
49
60
  private isConnectedToBroker = true;
61
+ private eventEmitter = new EventEmitter();
62
+ private lastDisconnectedAt?: Date;
50
63
 
51
64
  private constructor(
52
65
  private broker: BrokerAsPromised,
@@ -69,6 +82,16 @@ export class BrokerProxy {
69
82
  }
70
83
 
71
84
  private onBrokerVhostInitialized(connection: ConnectionDetails): void {
85
+ const now = new Date();
86
+ const disconnectedDurationInMilliseconds = this.lastDisconnectedAt
87
+ ? now.getTime() - this.lastDisconnectedAt.getTime()
88
+ : 0;
89
+
90
+ this.eventEmitter.emit('reconnected', {
91
+ connection,
92
+ disconnectedDurationInMilliseconds,
93
+ });
94
+
72
95
  this.isConnectedToBroker = true;
73
96
  this.logger.debug({
74
97
  context: 'BrokerVhostInitialized',
@@ -78,6 +101,9 @@ export class BrokerProxy {
78
101
  }
79
102
 
80
103
  private onBrokerError(error: Error, connection: ConnectionDetails): void {
104
+ this.lastDisconnectedAt = new Date();
105
+ this.eventEmitter.emit('error', { error, connection });
106
+
81
107
  this.isConnectedToBroker = false;
82
108
  this.logger.error(error, {
83
109
  context: 'BrokerError',
@@ -315,4 +341,54 @@ export class BrokerProxy {
315
341
  public isConnected(): boolean {
316
342
  return this.isConnectedToBroker;
317
343
  }
344
+
345
+ /**
346
+ * Subscribes to the 'error' event, which is emitted when the broker encounters an error.
347
+ * @param event - The event name ('error').
348
+ * @param listener - A callback function that receives a `BrokerErrorEvent` object containing:
349
+ * - `error`: The error that occurred.
350
+ * - `connection`: Details about the connection where the error occurred.
351
+ */
352
+ public on(event: 'error', listener: (data: BrokerErrorEvent) => void): void;
353
+
354
+ /**
355
+ * Subscribes to the 'reconnected' event, which is emitted when the broker successfully reconnects.
356
+ * @param event - The event name ('reconnected').
357
+ * @param listener - A callback function that receives a `BrokerReconnectedEvent` object containing:
358
+ * - `connection`: Details about the re-established connection.
359
+ * - `disconnectedDurationInMilliseconds`: The duration (in milliseconds) for which the connection was lost.
360
+ */
361
+ public on(
362
+ event: 'reconnected',
363
+ listener: (data: BrokerReconnectedEvent) => void,
364
+ ): void;
365
+
366
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
367
+ public on(...args: any[]): void {
368
+ const [event, listener] = args;
369
+ this.eventEmitter.on(event, listener);
370
+ }
371
+
372
+ /**
373
+ * Unsubscribes from the 'error' event.
374
+ * @param event - The event name ('error').
375
+ * @param listener - The callback function to remove.
376
+ */
377
+ public off(event: 'error', listener: (data: BrokerErrorEvent) => void): void;
378
+
379
+ /**
380
+ * Unsubscribes from the 'reconnected' event.
381
+ * @param event - The event name ('reconnected').
382
+ * @param listener - The callback function to remove.
383
+ */
384
+ public off(
385
+ event: 'reconnected',
386
+ listener: (data: BrokerReconnectedEvent) => void,
387
+ ): void;
388
+
389
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
390
+ public off(...args: any[]): void {
391
+ const [event, listener] = args;
392
+ this.eventEmitter.off(event, listener);
393
+ }
318
394
  }