@autofleet/rabbit 3.0.1-beta → 3.0.1-beta10

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.
Files changed (3) hide show
  1. package/dist/index.js +41 -10
  2. package/package.json +2 -2
  3. package/src/index.ts +45 -11
package/dist/index.js CHANGED
@@ -126,13 +126,24 @@ class RabbitMq {
126
126
  static getPublishOptions(customHeaders = {}) {
127
127
  const trace = zehut_1.getCurrentPayload();
128
128
  const user = trace?.context?.get(consts_1.USER_OBJECT);
129
+ const traceId = trace?.context?.get(consts_1.TRACING_HEADER);
130
+ const outbreakTrace = zehut_1.outbreak.getCurrentContext();
131
+ const obj = Object.fromEntries(trace?.context);
132
+ const jsonString = JSON.stringify(obj);
133
+ logger_1.default.info('getPublishOptions', {
134
+ traceId,
135
+ user,
136
+ traceId2: outbreakTrace?.context?.get(consts_1.TRACING_HEADER),
137
+ traceContextSize: trace?.context?.size,
138
+ jsonString,
139
+ });
129
140
  return {
130
141
  timestamp: moment_1.default().unix(),
131
142
  headers: {
132
143
  creationTimestamp: moment_1.default().valueOf(),
133
144
  ...customHeaders,
134
145
  [consts_1.USER_TRACING_HEADER]: user?.id,
135
- [consts_1.TRACING_HEADER]: trace?.context?.get(consts_1.TRACING_HEADER),
146
+ [consts_1.TRACING_HEADER]: traceId || outbreakTrace?.context?.get(consts_1.TRACING_HEADER),
136
147
  },
137
148
  };
138
149
  }
@@ -339,23 +350,43 @@ class RabbitMq {
339
350
  const traceId = msg.properties.headers[consts_1.TRACING_HEADER];
340
351
  const userId = msg.properties.headers[consts_1.USER_TRACING_HEADER];
341
352
  logger_1.default.info('rabbit: consume', { traceId, userId, enableRabbitTrace });
342
- if (traceId) {
343
- const trace = zehut_1.newTrace(zehut_1.traceTypes.RABBIT);
344
- trace?.context?.set(consts_1.TRACING_HEADER, traceId);
345
- }
346
- else if (userId && enableRabbitTrace) {
353
+ const parsedMessage = RabbitMq.parseMsg(msg);
354
+ const releaseLock = await this.lockRedisIfNeeded(parsedMessage, optionsWithDefaults);
355
+ const trace = zehut_1.newTrace(zehut_1.traceTypes.RABBIT);
356
+ const outbreakTrace = zehut_1.outbreak.newTrace(zehut_1.traceTypes.RABBIT);
357
+ if (userId && enableRabbitTrace) {
347
358
  try {
348
- await zehut_1.setRabbitTrace(userId);
359
+ await Promise.all([
360
+ zehut_1.createOrSetRabbitTrace(trace, userId),
361
+ zehut_1.createOrSetRabbitTrace(outbreakTrace, userId),
362
+ ]);
349
363
  }
350
364
  catch (e) {
351
365
  logger_1.default.error('rabbit: failed to setRabbitTrace', { userId, e });
366
+ await this.nack(channel, queue, optionsWithDefaults, { messageTtl: deadMessageTtl }, msg, releaseLock)(msg);
352
367
  }
353
368
  }
369
+ logger_1.default.info('rabbit consume - first trace', {
370
+ trace,
371
+ outbreakTrace,
372
+ user: trace?.context?.get(consts_1.USER_OBJECT),
373
+ });
374
+ if (traceId) {
375
+ trace?.context?.set(consts_1.TRACING_HEADER, traceId);
376
+ outbreakTrace?.context.set(consts_1.TRACING_HEADER, traceId);
377
+ logger_1.default.info('rabbit consume - second trace', {
378
+ trace,
379
+ outbreakTrace,
380
+ user: trace?.context?.get(consts_1.USER_OBJECT),
381
+ traceId: trace?.context?.get(consts_1.TRACING_HEADER),
382
+ });
383
+ }
384
+ logger_1.default.info('rabbit consume - third trace', {
385
+ trace: zehut_1.getCurrentPayload(),
386
+ });
354
387
  if (auditContext) {
355
- auditContext(queue);
388
+ await auditContext(queue);
356
389
  }
357
- const parsedMessage = RabbitMq.parseMsg(msg);
358
- const releaseLock = await this.lockRedisIfNeeded(parsedMessage, optionsWithDefaults);
359
390
  const shouldConsume = await this.shouldConsumeMessageByTimestamp(parsedMessage);
360
391
  if (!shouldConsume) {
361
392
  await this.unlockRedisIfNeeded(releaseLock);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autofleet/rabbit",
3
- "version": "3.0.1-beta",
3
+ "version": "3.0.1-beta10",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@autofleet/logger": "^1.2.8",
19
- "@autofleet/zehut": "^3.0.1-beta",
19
+ "@autofleet/zehut": "^3.0.1-beta3",
20
20
  "@types/amqplib": "0.8.2",
21
21
  "@types/uuid": "^8.3.3",
22
22
  "amqp-connection-manager": "4.1.9",
package/src/index.ts CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  ConfirmChannel, ConsumeMessage, Options, Replies,
10
10
  } from 'amqplib';
11
11
  import {
12
- getCurrentPayload, newTrace, traceTypes, setRabbitTrace,
12
+ getCurrentPayload, newTrace, traceTypes, createOrSetRabbitTrace, outbreak,
13
13
  } from '@autofleet/zehut';
14
14
  import logger from './logger';
15
15
  import RabbitError from './lib/rabbitError';
@@ -114,13 +114,24 @@ class RabbitMq implements IAfRabbitMq {
114
114
  static getPublishOptions(customHeaders: CustomMessageHeaders = {}) {
115
115
  const trace = getCurrentPayload();
116
116
  const user = trace?.context?.get(USER_OBJECT);
117
+ const traceId = trace?.context?.get(TRACING_HEADER);
118
+ const outbreakTrace = outbreak.getCurrentContext();
119
+ const obj = Object.fromEntries(trace?.context);
120
+ const jsonString = JSON.stringify(obj);
121
+ logger.info('getPublishOptions', {
122
+ traceId,
123
+ user,
124
+ traceId2: outbreakTrace?.context?.get(TRACING_HEADER),
125
+ traceContextSize: trace?.context?.size,
126
+ jsonString,
127
+ });
117
128
  return {
118
129
  timestamp: moment().unix(),
119
130
  headers: {
120
131
  creationTimestamp: moment().valueOf(),
121
132
  ...customHeaders,
122
133
  [USER_TRACING_HEADER]: user?.id,
123
- [TRACING_HEADER]: trace?.context?.get(TRACING_HEADER),
134
+ [TRACING_HEADER]: traceId || outbreakTrace?.context?.get(TRACING_HEADER),
124
135
  },
125
136
  };
126
137
  }
@@ -483,23 +494,46 @@ class RabbitMq implements IAfRabbitMq {
483
494
  const traceId = msg.properties.headers[TRACING_HEADER];
484
495
  const userId = msg.properties.headers[USER_TRACING_HEADER];
485
496
  logger.info('rabbit: consume', { traceId, userId, enableRabbitTrace });
486
- if (traceId) {
487
- const trace = newTrace(traceTypes.RABBIT);
488
- (trace as any)?.context?.set(TRACING_HEADER, traceId);
489
- } else if (userId && enableRabbitTrace) {
497
+ const parsedMessage = RabbitMq.parseMsg(msg);
498
+ const releaseLock = await this.lockRedisIfNeeded(parsedMessage, optionsWithDefaults);
499
+ const trace = newTrace(traceTypes.RABBIT);
500
+ const outbreakTrace = outbreak.newTrace(traceTypes.RABBIT);
501
+ if (userId && enableRabbitTrace) {
490
502
  try {
491
- await setRabbitTrace(userId);
503
+ await Promise.all([
504
+ createOrSetRabbitTrace(trace, userId),
505
+ createOrSetRabbitTrace(outbreakTrace, userId),
506
+ ]);
492
507
  } catch (e) {
493
508
  logger.error('rabbit: failed to setRabbitTrace', { userId, e });
509
+ await this.nack(channel, queue, optionsWithDefaults, { messageTtl: deadMessageTtl }, msg, releaseLock)(msg);
494
510
  }
495
511
  }
496
512
 
497
- if (auditContext) {
498
- auditContext(queue);
513
+ logger.info('rabbit consume - first trace', {
514
+ trace,
515
+ outbreakTrace,
516
+ user: trace?.context?.get(USER_OBJECT),
517
+ });
518
+
519
+ if (traceId) {
520
+ (trace as any)?.context?.set(TRACING_HEADER, traceId);
521
+ (outbreakTrace as any)?.context.set(TRACING_HEADER, traceId);
522
+ logger.info('rabbit consume - second trace', {
523
+ trace,
524
+ outbreakTrace,
525
+ user: trace?.context?.get(USER_OBJECT),
526
+ traceId: trace?.context?.get(TRACING_HEADER),
527
+ // traceId2: outbreakTrace?.context?.get(TRACING_HEADER),
528
+ });
499
529
  }
500
530
 
501
- const parsedMessage = RabbitMq.parseMsg(msg);
502
- const releaseLock = await this.lockRedisIfNeeded(parsedMessage, optionsWithDefaults);
531
+ logger.info('rabbit consume - third trace', {
532
+ trace: getCurrentPayload(),
533
+ });
534
+ if (auditContext) {
535
+ await auditContext(queue);
536
+ }
503
537
  const shouldConsume = await this.shouldConsumeMessageByTimestamp(parsedMessage);
504
538
  if (!shouldConsume) {
505
539
  await this.unlockRedisIfNeeded(releaseLock);