@rsdk/nats.transport 5.12.0-next.5 → 5.12.0-next.7

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
  */
@@ -208,7 +209,18 @@ class NatsJetStreamServer extends microservices_1.Server {
208
209
  await Promise.all(Array.from(this.streams.values()).map(async (streamName) => {
209
210
  oldConsumersByStreamMap.set(streamName, new Map());
210
211
  const oldConsumers = oldConsumersByStreamMap.get(streamName);
211
- streamsMap.set(streamName, await jsm.streams.info(streamName));
212
+ try {
213
+ const info = await jsm.streams.info(streamName);
214
+ streamsMap.set(streamName, info);
215
+ }
216
+ catch (error) {
217
+ this.logger.error('Stream not found', { streamName });
218
+ throw new core_1.InternalException(`Stream not found: ${streamName}`, {
219
+ cause: error,
220
+ details: { streamName },
221
+ });
222
+ }
223
+ this.logger.trace('Stream found successfully', { streamName });
212
224
  for await (const consumer of jsm.consumers.list(streamName)) {
213
225
  if (consumer.config.durable_name?.includes(this.normalizedApplicationName)) {
214
226
  oldConsumers.set(consumer.config.durable_name, consumer);
@@ -327,29 +339,36 @@ class NatsJetStreamServer extends microservices_1.Server {
327
339
  */
328
340
  async handleEventMessages(consumer, mapping, consumerName) {
329
341
  const msgs = await consumer.consume();
342
+ const otel = new nats_jetstream_otel_1.NatsJetStreamOtelInstrumentation();
330
343
  /**
331
344
  * Слушаем все сообщения консьюмера
332
345
  * @type {Promise<void>}
333
346
  */
334
347
  const done = (async () => {
335
348
  for await (const msg of msgs) {
349
+ const parentCtx = otel.extractContext(msg.headers);
350
+ const span = otel.startConsumerSpan(msg.subject, parentCtx);
336
351
  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
- }
352
+ await otel.runInContext(parentCtx, span, async () => {
353
+ const { data, pattern } = this.deserializer.deserialize(msg);
354
+ const context = new nestjs_nats_jetstream_transport_1.NatsJetStreamContext([msg]);
355
+ const contract = mapping.get(this.getTypePart(pattern));
356
+ if (!contract) {
357
+ throw new core_1.NotFoundException(`Unknown ${events_common_1.X_TYPE_HEADER} header`);
358
+ }
359
+ const resultOrStream = await contract.handler(data, context);
360
+ if ((0, rxjs_1.isObservable)(resultOrStream)) {
361
+ const connectableSource = (0, rxjs_1.connectable)(resultOrStream, {
362
+ connector: () => new rxjs_1.Subject(),
363
+ resetOnDisconnect: false,
364
+ });
365
+ connectableSource.connect();
366
+ }
367
+ });
368
+ otel.endSpan(span);
351
369
  }
352
370
  catch (error) {
371
+ otel.endSpan(span, error);
353
372
  this.logger.error(error.message, error.stack);
354
373
  // specifies that you failed to process the server and instructs
355
374
  // 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.5",
3
+ "version": "5.12.0-next.7",
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": "6a5a92adcb81f72e74db723613b0a930ef52a821"
45
+ "gitHead": "8ba4df5208a29cbaaca6eb9c58bf3a3e6d008056"
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,
@@ -331,8 +332,18 @@ export class NatsJetStreamServer
331
332
  oldConsumersByStreamMap.set(streamName, new Map());
332
333
  const oldConsumers = oldConsumersByStreamMap.get(streamName)!;
333
334
 
334
- streamsMap.set(streamName, await jsm.streams.info(streamName));
335
-
335
+ try {
336
+ const info = await jsm.streams.info(streamName);
337
+
338
+ streamsMap.set(streamName, info);
339
+ } catch (error) {
340
+ this.logger.error('Stream not found', { streamName });
341
+ throw new InternalException(`Stream not found: ${streamName}`, {
342
+ cause: error,
343
+ details: { streamName },
344
+ });
345
+ }
346
+ this.logger.trace('Stream found successfully', { streamName });
336
347
  for await (const consumer of jsm.consumers.list(streamName)) {
337
348
  if (
338
349
  consumer.config.durable_name?.includes(
@@ -566,6 +577,7 @@ export class NatsJetStreamServer
566
577
  consumerName: string,
567
578
  ): Promise<void> {
568
579
  const msgs = await consumer.consume();
580
+ const otel = new NatsJetStreamOtelInstrumentation();
569
581
 
570
582
  /**
571
583
  * Слушаем все сообщения консьюмера
@@ -573,25 +585,34 @@ export class NatsJetStreamServer
573
585
  */
574
586
  const done = (async (): Promise<void> => {
575
587
  for await (const msg of msgs) {
588
+ const parentCtx = otel.extractContext(msg.headers);
589
+ const span = otel.startConsumerSpan(msg.subject, parentCtx);
590
+
576
591
  try {
577
- const { data, pattern } = this.deserializer.deserialize(msg);
578
- const context = new NatsJetStreamContext([msg]);
579
- const contract = mapping.get(this.getTypePart(pattern));
592
+ await otel.runInContext(parentCtx, span, async () => {
593
+ const { data, pattern } = this.deserializer.deserialize(msg);
594
+ const context = new NatsJetStreamContext([msg]);
595
+ const contract = mapping.get(this.getTypePart(pattern));
580
596
 
581
- if (!contract) {
582
- throw new NotFoundException(`Unknown ${X_TYPE_HEADER} header`);
583
- }
597
+ if (!contract) {
598
+ throw new NotFoundException(`Unknown ${X_TYPE_HEADER} header`);
599
+ }
584
600
 
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
- });
601
+ const resultOrStream = await contract.handler(data, context);
591
602
 
592
- connectableSource.connect();
593
- }
603
+ if (isObservable(resultOrStream)) {
604
+ const connectableSource = connectable(resultOrStream, {
605
+ connector: () => new Subject(),
606
+ resetOnDisconnect: false,
607
+ });
608
+
609
+ connectableSource.connect();
610
+ }
611
+ });
612
+
613
+ otel.endSpan(span);
594
614
  } catch (error: any) {
615
+ otel.endSpan(span, error);
595
616
  this.logger.error(error.message, error.stack);
596
617
 
597
618
  // specifies that you failed to process the server and instructs