@rsdk/nats.transport 5.12.0-next.4 → 5.12.0-next.6

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.
@@ -13,11 +13,16 @@ class NatsJetstreamHeaders {
13
13
  if (!server_1.NatsJetStreamServer.isNatsContext(natsCtx)) {
14
14
  throw new core_1.InputException('Unexpected call with non Nats ArgumentHost');
15
15
  }
16
- this.normalizedHeaders = Object.fromEntries(Object.entries(natsCtx.message.headers || {}).map(([k, v]) => [
16
+ //@ts-expect-error Случился подвох с типами со стороны библиотеки.
17
+ // На самом деле в natsCtx.message.headers лежат не только хедеры, но и прочий мусор.
18
+ // Кроме того, в natsCtx.message.headers?.headers лежит Map, поэтому такой костыль.
19
+ const natsHeaders = natsCtx.message.headers?.headers;
20
+ const natsHeadersArray = natsHeaders ? [...natsHeaders] : [];
21
+ this.normalizedHeaders = Object.fromEntries(natsHeadersArray.map(([k, v]) => [
17
22
  Array.isArray(k)
18
23
  ? k[0].toString().toLowerCase()
19
24
  : k.toString().toLowerCase(),
20
- v,
25
+ Array.isArray(v) ? v[0] : v,
21
26
  ]));
22
27
  }
23
28
  get(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"nats-jetstream.headers.js","sourceRoot":"","sources":["../../src/jetstream/nats-jetstream.headers.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAE5C,qCAA+C;AAE/C;;GAEG;AACH,MAAa,oBAAoB;IACd,iBAAiB,CAAyB;IAE3D,YAAY,GAAqB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,4BAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,qBAAc,CAAC,4CAA4C,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CACzC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5D,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;gBAC/B,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;YAC9B,CAAC;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;CACF;AAvBD,oDAuBC"}
1
+ {"version":3,"file":"nats-jetstream.headers.js","sourceRoot":"","sources":["../../src/jetstream/nats-jetstream.headers.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAE5C,qCAA+C;AAE/C;;GAEG;AACH,MAAa,oBAAoB;IACd,iBAAiB,CAAyB;IAE3D,YAAY,GAAqB;QAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,4BAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,qBAAc,CAAC,4CAA4C,CAAC,CAAC;QACzE,CAAC;QAED,kEAAkE;QAClE,qFAAqF;QACrF,mFAAmF;QAEnF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;QACrD,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,WAAW,CACzC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;gBAC/B,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;YAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC;CACF;AA9BD,oDA8BC"}
@@ -0,0 +1,29 @@
1
+ import type { Context, Span } from '@opentelemetry/api';
2
+ import type { MsgHdrs } from 'nats';
3
+ /**
4
+ * Инструментация OpenTelemetry для NATS JetStream.
5
+ * Graceful degradation: если @opentelemetry/api не установлен — ничего не делает.
6
+ */
7
+ export declare class NatsJetStreamOtelInstrumentation {
8
+ private readonly api;
9
+ constructor();
10
+ /**
11
+ * Извлекает otel Context из NATS-заголовков (W3C traceparent/tracestate).
12
+ * Возвращает ROOT_CONTEXT если otel недоступен или заголовков нет.
13
+ */
14
+ extractContext(headers: MsgHdrs | undefined): Context;
15
+ /**
16
+ * Создаёт дочерний SpanKind.CONSUMER спан с именем `nats.consume <subject>`.
17
+ * Возвращает null если otel недоступен.
18
+ */
19
+ startConsumerSpan(subject: string, parentCtx: Context): Span | null;
20
+ /**
21
+ * Запускает callback внутри otel-контекста с активным спаном.
22
+ * Если otel недоступен или span равен null — вызывает callback напрямую.
23
+ */
24
+ runInContext<T>(parentCtx: Context, span: Span | null, callback: () => T): T;
25
+ /**
26
+ * Завершает спан. При наличии ошибки — записывает её и устанавливает статус ERROR.
27
+ */
28
+ endSpan(span: Span | null, error?: unknown): void;
29
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NatsJetStreamOtelInstrumentation = void 0;
4
+ /**
5
+ * Инструментация OpenTelemetry для NATS JetStream.
6
+ * Graceful degradation: если @opentelemetry/api не установлен — ничего не делает.
7
+ */
8
+ class NatsJetStreamOtelInstrumentation {
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ api;
11
+ constructor() {
12
+ try {
13
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
14
+ this.api = require('@opentelemetry/api');
15
+ }
16
+ catch {
17
+ this.api = null;
18
+ }
19
+ }
20
+ /**
21
+ * Извлекает otel Context из NATS-заголовков (W3C traceparent/tracestate).
22
+ * Возвращает ROOT_CONTEXT если otel недоступен или заголовков нет.
23
+ */
24
+ extractContext(headers) {
25
+ if (!this.api || !headers) {
26
+ return this.api?.ROOT_CONTEXT ?? {};
27
+ }
28
+ const { propagation, ROOT_CONTEXT } = this.api;
29
+ return propagation.extract(ROOT_CONTEXT, headers, {
30
+ get(carrier, key) {
31
+ return carrier.get(key) || undefined;
32
+ },
33
+ keys(carrier) {
34
+ return [...carrier.keys()];
35
+ },
36
+ });
37
+ }
38
+ /**
39
+ * Создаёт дочерний SpanKind.CONSUMER спан с именем `nats.consume <subject>`.
40
+ * Возвращает null если otel недоступен.
41
+ */
42
+ startConsumerSpan(subject, parentCtx) {
43
+ if (!this.api)
44
+ return null;
45
+ const { trace, SpanKind } = this.api;
46
+ const tracer = trace.getTracer('rsdk:nats.transport');
47
+ return tracer.startSpan(`nats.consume ${subject}`, { kind: SpanKind.CONSUMER }, parentCtx);
48
+ }
49
+ /**
50
+ * Запускает callback внутри otel-контекста с активным спаном.
51
+ * Если otel недоступен или span равен null — вызывает callback напрямую.
52
+ */
53
+ runInContext(parentCtx, span, callback) {
54
+ if (!this.api || !span)
55
+ return callback();
56
+ const { context, trace } = this.api;
57
+ return context.with(trace.setSpan(parentCtx, span), callback);
58
+ }
59
+ /**
60
+ * Завершает спан. При наличии ошибки — записывает её и устанавливает статус ERROR.
61
+ */
62
+ endSpan(span, error) {
63
+ if (!span || !this.api)
64
+ return;
65
+ const { SpanStatusCode } = this.api;
66
+ if (error instanceof Error) {
67
+ span.recordException(error);
68
+ span.setStatus({ code: SpanStatusCode.ERROR, message: error.message });
69
+ }
70
+ else {
71
+ span.setStatus({ code: SpanStatusCode.OK });
72
+ }
73
+ span.end();
74
+ }
75
+ }
76
+ exports.NatsJetStreamOtelInstrumentation = NatsJetStreamOtelInstrumentation;
77
+ //# sourceMappingURL=nats-jetstream.otel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nats-jetstream.otel.js","sourceRoot":"","sources":["../../src/jetstream/nats-jetstream.otel.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,gCAAgC;IAC3C,8DAA8D;IAC7C,GAAG,CAA6B;IAEjD;QACE,IAAI,CAAC;YACH,iEAAiE;YACjE,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,GAAG,EAAE,YAAY,IAAK,EAAc,CAAC;QACnD,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAE/C,OAAO,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE;YAChD,GAAG,CAAC,OAAgB,EAAE,GAAW;gBAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,OAAgB;gBACnB,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAe,EAAE,SAAkB;QACnD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC,SAAS,CACrB,gBAAgB,OAAO,EAAE,EACzB,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAC3B,SAAS,CACV,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAI,SAAkB,EAAE,IAAiB,EAAE,QAAiB;QACtE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,EAAE,CAAC;QAE1C,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAEpC,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAiB,EAAE,KAAe;QACxC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,OAAO;QAE/B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAEpC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;CACF;AAhFD,4EAgFC"}
@@ -12,6 +12,7 @@ const lodash_1 = require("lodash");
12
12
  const nats_1 = require("nats");
13
13
  const rxjs_1 = require("rxjs");
14
14
  const events_deserializer_1 = require("../events.deserializer");
15
+ const nats_jetstream_otel_1 = require("./nats-jetstream.otel");
15
16
  /**
16
17
  * Класс, реализующий сервер NATS JetStream.
17
18
  */
@@ -327,29 +328,36 @@ class NatsJetStreamServer extends microservices_1.Server {
327
328
  */
328
329
  async handleEventMessages(consumer, mapping, consumerName) {
329
330
  const msgs = await consumer.consume();
331
+ const otel = new nats_jetstream_otel_1.NatsJetStreamOtelInstrumentation();
330
332
  /**
331
333
  * Слушаем все сообщения консьюмера
332
334
  * @type {Promise<void>}
333
335
  */
334
336
  const done = (async () => {
335
337
  for await (const msg of msgs) {
338
+ const parentCtx = otel.extractContext(msg.headers);
339
+ const span = otel.startConsumerSpan(msg.subject, parentCtx);
336
340
  try {
337
- const { data, pattern } = this.deserializer.deserialize(msg);
338
- const context = new nestjs_nats_jetstream_transport_1.NatsJetStreamContext([msg]);
339
- const contract = mapping.get(this.getTypePart(pattern));
340
- if (!contract) {
341
- throw new core_1.NotFoundException(`Unknown ${events_common_1.X_TYPE_HEADER} header`);
342
- }
343
- const resultOrStream = await contract.handler(data, context);
344
- if ((0, rxjs_1.isObservable)(resultOrStream)) {
345
- const connectableSource = (0, rxjs_1.connectable)(resultOrStream, {
346
- connector: () => new rxjs_1.Subject(),
347
- resetOnDisconnect: false,
348
- });
349
- connectableSource.connect();
350
- }
341
+ await otel.runInContext(parentCtx, span, async () => {
342
+ const { data, pattern } = this.deserializer.deserialize(msg);
343
+ const context = new nestjs_nats_jetstream_transport_1.NatsJetStreamContext([msg]);
344
+ const contract = mapping.get(this.getTypePart(pattern));
345
+ if (!contract) {
346
+ throw new core_1.NotFoundException(`Unknown ${events_common_1.X_TYPE_HEADER} header`);
347
+ }
348
+ const resultOrStream = await contract.handler(data, context);
349
+ if ((0, rxjs_1.isObservable)(resultOrStream)) {
350
+ const connectableSource = (0, rxjs_1.connectable)(resultOrStream, {
351
+ connector: () => new rxjs_1.Subject(),
352
+ resetOnDisconnect: false,
353
+ });
354
+ connectableSource.connect();
355
+ }
356
+ });
357
+ otel.endSpan(span);
351
358
  }
352
359
  catch (error) {
360
+ otel.endSpan(span, error);
353
361
  this.logger.error(error.message, error.stack);
354
362
  // specifies that you failed to process the server and instructs
355
363
  // the server to not send it again (to any consumer)
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/jetstream/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/jetstream/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/nats.transport",
3
- "version": "5.12.0-next.4",
3
+ "version": "5.12.0-next.6",
4
4
  "description": "Nats NestJS Transport",
5
5
  "main": "dist/index.js",
6
6
  "license": "Apache License 2.0",
@@ -13,7 +13,7 @@
13
13
  "dependencies": {
14
14
  "@nestjs-plugins/nestjs-nats-jetstream-transport": "^2.2.6",
15
15
  "lodash": "^4.17.21",
16
- "nats": "~2.28.2"
16
+ "nats": "~2.29.3"
17
17
  },
18
18
  "peerDependencies": {
19
19
  "@nestjs/common": "^10.4.20",
@@ -36,6 +36,11 @@
36
36
  "reflect-metadata": "^0.1.12 || ^0.2.0",
37
37
  "rxjs": "^7.1.0"
38
38
  },
39
+ "peerDependenciesMeta": {
40
+ "@opentelemetry/api": {
41
+ "optional": true
42
+ }
43
+ },
39
44
  "nx": {},
40
- "gitHead": "7d42d139bc812ac8526d6d9848d24165f8e15a20"
45
+ "gitHead": "32103725bddbe5e7e99074ba40b5032dc14cf60c"
41
46
  }
@@ -17,12 +17,19 @@ export class NatsJetstreamHeaders implements GenericHeaders {
17
17
  throw new InputException('Unexpected call with non Nats ArgumentHost');
18
18
  }
19
19
 
20
+ //@ts-expect-error Случился подвох с типами со стороны библиотеки.
21
+ // На самом деле в natsCtx.message.headers лежат не только хедеры, но и прочий мусор.
22
+ // Кроме того, в natsCtx.message.headers?.headers лежит Map, поэтому такой костыль.
23
+
24
+ const natsHeaders = natsCtx.message.headers?.headers;
25
+ const natsHeadersArray = natsHeaders ? [...natsHeaders] : [];
26
+
20
27
  this.normalizedHeaders = Object.fromEntries(
21
- Object.entries(natsCtx.message.headers || {}).map(([k, v]) => [
28
+ natsHeadersArray.map(([k, v]) => [
22
29
  Array.isArray(k)
23
30
  ? k[0].toString().toLowerCase()
24
31
  : k.toString().toLowerCase(),
25
- v,
32
+ Array.isArray(v) ? v[0] : v,
26
33
  ]),
27
34
  );
28
35
  }
@@ -0,0 +1,88 @@
1
+ import type { Context, Span } from '@opentelemetry/api';
2
+ import type { MsgHdrs } from 'nats';
3
+
4
+ /**
5
+ * Инструментация OpenTelemetry для NATS JetStream.
6
+ * Graceful degradation: если @opentelemetry/api не установлен — ничего не делает.
7
+ */
8
+ export class NatsJetStreamOtelInstrumentation {
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ private readonly api: Record<string, any> | null;
11
+
12
+ constructor() {
13
+ try {
14
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
15
+ this.api = require('@opentelemetry/api');
16
+ } catch {
17
+ this.api = null;
18
+ }
19
+ }
20
+
21
+ /**
22
+ * Извлекает otel Context из NATS-заголовков (W3C traceparent/tracestate).
23
+ * Возвращает ROOT_CONTEXT если otel недоступен или заголовков нет.
24
+ */
25
+ extractContext(headers: MsgHdrs | undefined): Context {
26
+ if (!this.api || !headers) {
27
+ return this.api?.ROOT_CONTEXT ?? ({} as Context);
28
+ }
29
+
30
+ const { propagation, ROOT_CONTEXT } = this.api;
31
+
32
+ return propagation.extract(ROOT_CONTEXT, headers, {
33
+ get(carrier: MsgHdrs, key: string): string | undefined {
34
+ return carrier.get(key) || undefined;
35
+ },
36
+ keys(carrier: MsgHdrs): string[] {
37
+ return [...carrier.keys()];
38
+ },
39
+ });
40
+ }
41
+
42
+ /**
43
+ * Создаёт дочерний SpanKind.CONSUMER спан с именем `nats.consume <subject>`.
44
+ * Возвращает null если otel недоступен.
45
+ */
46
+ startConsumerSpan(subject: string, parentCtx: Context): Span | null {
47
+ if (!this.api) return null;
48
+
49
+ const { trace, SpanKind } = this.api;
50
+ const tracer = trace.getTracer('rsdk:nats.transport');
51
+
52
+ return tracer.startSpan(
53
+ `nats.consume ${subject}`,
54
+ { kind: SpanKind.CONSUMER },
55
+ parentCtx,
56
+ );
57
+ }
58
+
59
+ /**
60
+ * Запускает callback внутри otel-контекста с активным спаном.
61
+ * Если otel недоступен или span равен null — вызывает callback напрямую.
62
+ */
63
+ runInContext<T>(parentCtx: Context, span: Span | null, callback: () => T): T {
64
+ if (!this.api || !span) return callback();
65
+
66
+ const { context, trace } = this.api;
67
+
68
+ return context.with(trace.setSpan(parentCtx, span), callback);
69
+ }
70
+
71
+ /**
72
+ * Завершает спан. При наличии ошибки — записывает её и устанавливает статус ERROR.
73
+ */
74
+ endSpan(span: Span | null, error?: unknown): void {
75
+ if (!span || !this.api) return;
76
+
77
+ const { SpanStatusCode } = this.api;
78
+
79
+ if (error instanceof Error) {
80
+ span.recordException(error);
81
+ span.setStatus({ code: SpanStatusCode.ERROR, message: error.message });
82
+ } else {
83
+ span.setStatus({ code: SpanStatusCode.OK });
84
+ }
85
+
86
+ span.end();
87
+ }
88
+ }
@@ -34,6 +34,7 @@ import { connectable, isObservable, Subject } from 'rxjs';
34
34
 
35
35
  import { EventsDeserializer } from '../events.deserializer';
36
36
 
37
+ import { NatsJetStreamOtelInstrumentation } from './nats-jetstream.otel';
37
38
  import type {
38
39
  ConsumerInfo,
39
40
  ConsumersMap,
@@ -566,6 +567,7 @@ export class NatsJetStreamServer
566
567
  consumerName: string,
567
568
  ): Promise<void> {
568
569
  const msgs = await consumer.consume();
570
+ const otel = new NatsJetStreamOtelInstrumentation();
569
571
 
570
572
  /**
571
573
  * Слушаем все сообщения консьюмера
@@ -573,25 +575,34 @@ export class NatsJetStreamServer
573
575
  */
574
576
  const done = (async (): Promise<void> => {
575
577
  for await (const msg of msgs) {
578
+ const parentCtx = otel.extractContext(msg.headers);
579
+ const span = otel.startConsumerSpan(msg.subject, parentCtx);
580
+
576
581
  try {
577
- const { data, pattern } = this.deserializer.deserialize(msg);
578
- const context = new NatsJetStreamContext([msg]);
579
- const contract = mapping.get(this.getTypePart(pattern));
582
+ await otel.runInContext(parentCtx, span, async () => {
583
+ const { data, pattern } = this.deserializer.deserialize(msg);
584
+ const context = new NatsJetStreamContext([msg]);
585
+ const contract = mapping.get(this.getTypePart(pattern));
580
586
 
581
- if (!contract) {
582
- throw new NotFoundException(`Unknown ${X_TYPE_HEADER} header`);
583
- }
587
+ if (!contract) {
588
+ throw new NotFoundException(`Unknown ${X_TYPE_HEADER} header`);
589
+ }
584
590
 
585
- const resultOrStream = await contract.handler(data, context);
586
- if (isObservable(resultOrStream)) {
587
- const connectableSource = connectable(resultOrStream, {
588
- connector: () => new Subject(),
589
- resetOnDisconnect: false,
590
- });
591
+ const resultOrStream = await contract.handler(data, context);
591
592
 
592
- connectableSource.connect();
593
- }
593
+ if (isObservable(resultOrStream)) {
594
+ const connectableSource = connectable(resultOrStream, {
595
+ connector: () => new Subject(),
596
+ resetOnDisconnect: false,
597
+ });
598
+
599
+ connectableSource.connect();
600
+ }
601
+ });
602
+
603
+ otel.endSpan(span);
594
604
  } catch (error: any) {
605
+ otel.endSpan(span, error);
595
606
  this.logger.error(error.message, error.stack);
596
607
 
597
608
  // specifies that you failed to process the server and instructs