@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.
- package/dist/index.js +41 -10
- package/package.json +2 -2
- 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]:
|
|
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
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
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
|
|
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-
|
|
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-
|
|
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,
|
|
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]:
|
|
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
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
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
|
|
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
|
-
|
|
498
|
-
|
|
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
|
-
|
|
502
|
-
|
|
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);
|