@cargolift-cdi/util-rabbitmq 0.2.4 → 0.2.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.
@@ -1,5 +1,5 @@
1
- import type { RabbitMQChannel, RabbitMQMessage } from '@cargolift-cdi/types';
2
- import { LoggerContextService } from '@cargolift-cdi/common';
1
+ import type { RabbitMQChannel, RabbitMQMessage } from "@cargolift-cdi/types";
2
+ import { LoggerContextService } from "@cargolift-cdi/common";
3
3
  /**
4
4
  * Publica mensagens com erro na Dead Letter Queue (DLQ) do RabbitMQ e faz ack da mensagem original.
5
5
  * @param channel Canal do RabbitMQ
@@ -8,5 +8,7 @@ import { LoggerContextService } from '@cargolift-cdi/common';
8
8
  * @param dlqExchange Exchange da DLQ (opcional)
9
9
  * @param dlqRoutingKey Routing key da DLQ (opcional)
10
10
  */
11
- export declare function publishToDlqAndAck(channel: RabbitMQChannel, originalMsg: RabbitMQMessage, logger: LoggerContextService, error: unknown, dlqExchange?: string, dlqRoutingKey?: string): void;
11
+ export declare function publishToDlqAndAck(channel: RabbitMQChannel, originalMsg: RabbitMQMessage, logger: LoggerContextService, error: unknown, dlqExchange?: string, dlqRoutingKey?: string, options?: {
12
+ noLoggerError: boolean;
13
+ }): void;
12
14
  //# sourceMappingURL=rabbitmq-publisher-dlq.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq-publisher-dlq.service.d.ts","sourceRoot":"","sources":["../src/rabbitmq-publisher-dlq.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAiB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,OAAO,EACd,WAAW,SAAc,EACzB,aAAa,SAAmB,QA2DjC"}
1
+ {"version":3,"file":"rabbitmq-publisher-dlq.service.d.ts","sourceRoot":"","sources":["../src/rabbitmq-publisher-dlq.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAiB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,KAAK,EAAE,OAAO,EACd,WAAW,SAAc,EACzB,aAAa,SAAmB,EAChC,OAAO,CAAC,EAAE;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,QAqFrC"}
@@ -1,4 +1,4 @@
1
- import { BusinessError } from '@cargolift-cdi/common';
1
+ import { BusinessError } from "@cargolift-cdi/common";
2
2
  /**
3
3
  * Publica mensagens com erro na Dead Letter Queue (DLQ) do RabbitMQ e faz ack da mensagem original.
4
4
  * @param channel Canal do RabbitMQ
@@ -7,36 +7,59 @@ import { BusinessError } from '@cargolift-cdi/common';
7
7
  * @param dlqExchange Exchange da DLQ (opcional)
8
8
  * @param dlqRoutingKey Routing key da DLQ (opcional)
9
9
  */
10
- export function publishToDlqAndAck(channel, originalMsg, logger, error, dlqExchange = 'email.dlx', dlqRoutingKey = 'email.send.dlq') {
11
- let normalized = { name: 'Error', message: 'Erro desconhecido' };
10
+ export function publishToDlqAndAck(channel, originalMsg, logger, error, dlqExchange = "email.dlx", dlqRoutingKey = "email.send.dlq", options) {
11
+ let normalized = {
12
+ name: "Error",
13
+ message: "Erro desconhecido",
14
+ };
12
15
  if (error instanceof Error) {
13
- normalized = { name: error.name, message: error.message, stack: error.stack };
16
+ normalized = {
17
+ name: error.name,
18
+ message: error.message,
19
+ stack: error.stack,
20
+ };
14
21
  }
15
- else if (typeof error === 'string') {
16
- normalized = { name: 'Error', message: error };
22
+ else if (typeof error === "string") {
23
+ normalized = { name: "Error", message: error };
17
24
  }
18
- else if (error && typeof error === 'object') {
25
+ else if (error && typeof error === "object") {
19
26
  try {
20
27
  const anyErr = error;
21
- normalized = { name: anyErr.name || 'Error', message: anyErr.message || JSON.stringify(anyErr), stack: anyErr.stack };
28
+ normalized = {
29
+ name: anyErr.name || "Error",
30
+ message: anyErr.message || JSON.stringify(anyErr),
31
+ stack: anyErr.stack,
32
+ };
22
33
  }
23
34
  catch { }
24
35
  }
25
- if (error instanceof BusinessError) {
26
- logger.businessError(normalized.message, { error: normalized });
27
- }
28
- else {
29
- logger.error(normalized.message, { error: normalized });
36
+ if (options?.noLoggerError === false) {
37
+ if (error instanceof BusinessError) {
38
+ logger.businessError(normalized.message, {
39
+ error: normalized.message,
40
+ name: normalized.name,
41
+ stack: normalized.stack,
42
+ });
43
+ }
44
+ else {
45
+ logger.error(normalized.message, {
46
+ error: normalized.message,
47
+ name: normalized.name,
48
+ stack: normalized.stack,
49
+ });
50
+ }
30
51
  }
31
52
  const originalHeaders = originalMsg.properties.headers || {};
32
53
  const headers = {
33
54
  ...originalHeaders,
34
- 'x-trace': logger.getContext().trace || originalHeaders['x-trace'] || `trace-missing:${process.env.npm_package_name}`,
35
- 'x-error-reason': normalized.message,
36
- 'x-exception-name': normalized.name,
55
+ "x-trace": logger.getContext().trace ||
56
+ originalHeaders["x-trace"] ||
57
+ `trace-missing:${process.env.npm_package_name}`,
58
+ "x-error-reason": normalized.message,
59
+ "x-exception-name": normalized.name,
37
60
  };
38
61
  if (normalized.stack) {
39
- headers['x-error-stacktrace'] = normalized.stack.substring(0, 4000); // limita tamanho
62
+ headers["x-error-stacktrace"] = normalized.stack.substring(0, 4000); // limita tamanho
40
63
  }
41
64
  // Payload enriquecido mantendo compatibilidade (fallback para conteúdo original)
42
65
  let buffer = originalMsg.content;
@@ -49,26 +72,31 @@ export function publishToDlqAndAck(channel, originalMsg, logger, error, dlqExcha
49
72
  originalPayload: safeParse(originalMsg.content),
50
73
  };
51
74
  buffer = Buffer.from(JSON.stringify(enriched));
52
- headers['x-dlq-enriched'] = '1';
75
+ headers["x-dlq-enriched"] = "1";
53
76
  }
54
77
  catch (e) {
55
- headers['x-dlq-enriched'] = '0';
78
+ headers["x-dlq-enriched"] = "0";
56
79
  }
57
80
  try {
58
81
  channel.publish(dlqExchange, dlqRoutingKey, buffer, { headers });
59
82
  channel.ack(originalMsg);
60
83
  }
61
84
  catch (pubErr) {
62
- logger.error('Falha ao publicar mensagem em DLQ', { originalError: normalized, publishError: pubErr });
85
+ logger.error("[publishToDlqAndAck] Fatal Error: Falha ao publicar mensagem em DLQ", {
86
+ originalError: normalized,
87
+ publishError: pubErr,
88
+ });
63
89
  try {
64
90
  channel.ack(originalMsg);
65
91
  }
66
- catch { /* evita loop */ }
92
+ catch {
93
+ /* evita loop */
94
+ }
67
95
  }
68
96
  }
69
97
  function safeParse(buf) {
70
98
  try {
71
- return JSON.parse(buf.toString('utf8'));
99
+ return JSON.parse(buf.toString("utf8"));
72
100
  }
73
101
  catch {
74
102
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq-publisher-dlq.service.js","sourceRoot":"","sources":["../src/rabbitmq-publisher-dlq.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rabbitmq-publisher-dlq.service.js","sourceRoot":"","sources":["../src/rabbitmq-publisher-dlq.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cargolift-cdi/util-rabbitmq",
3
- "version": "0.2.4",
3
+ "version": "0.2.7",
4
4
  "description": "Funções utilitárias para trabalhar com RabbitMQ",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",