@cargolift-cdi/util-rabbitmq 0.1.65 → 0.2.1
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/README.md +70 -0
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/integration-event.publisher.d.ts +42 -0
- package/dist/integration-event.publisher.d.ts.map +1 -0
- package/dist/{integration-publisher.service.js → integration-event.publisher.js} +8 -15
- package/dist/integration-event.publisher.js.map +1 -0
- package/dist/rabbitmq-publisher.service.d.ts +2 -10
- package/dist/rabbitmq-publisher.service.d.ts.map +1 -1
- package/dist/rabbitmq-publisher.service.js.map +1 -1
- package/package.json +3 -2
- package/dist/integration-publisher.service.d.ts +0 -37
- package/dist/integration-publisher.service.d.ts.map +0 -1
- package/dist/integration-publisher.service.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,2 +1,72 @@
|
|
|
1
1
|
# @cargolift-cdi/util-rabbitmq
|
|
2
2
|
|
|
3
|
+
Utilitários para publicação de mensagens RabbitMQ com confirmação (publisher confirms), enriquecimento de envelope e convenções de integração.
|
|
4
|
+
|
|
5
|
+
## Principais Componentes
|
|
6
|
+
|
|
7
|
+
- `RabbitMQPublisherService`: camada de baixo nível (confirmação, timeout, backpressure, headers contextuais).
|
|
8
|
+
- `IntegrationEventPublisher`: fachada de alto nível para eventos de integração HTTP → RabbitMQ.
|
|
9
|
+
- `publishToDlqAndAck`: envia mensagem original (enriquecida) para DLQ e faz ack.
|
|
10
|
+
- `RabbitMQConnectionManager`: reutiliza conexão evitando overhead de conexão por mensagem.
|
|
11
|
+
|
|
12
|
+
## Exemplo Rápido
|
|
13
|
+
|
|
14
|
+
```ts
|
|
15
|
+
@Injectable()
|
|
16
|
+
export class DemoService {
|
|
17
|
+
constructor(private readonly integration: IntegrationEventPublisher) {}
|
|
18
|
+
|
|
19
|
+
async send(data: any) {
|
|
20
|
+
await this.integration.publish({
|
|
21
|
+
routingKey: 'integration.erp.demo',
|
|
22
|
+
payload: data,
|
|
23
|
+
raw: { returnMeta: true }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Metadados de Publicação
|
|
30
|
+
`RabbitMQPublisherService.publish` aceita `returnMeta: true` em `opts` retornando:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
{
|
|
34
|
+
correlationId: string;
|
|
35
|
+
exchange: string;
|
|
36
|
+
routingKey: string;
|
|
37
|
+
pattern: string;
|
|
38
|
+
sizeBytes: number;
|
|
39
|
+
durationMs: number;
|
|
40
|
+
confirmedAt: string;
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## DLQ Enriquecida
|
|
45
|
+
`publishToDlqAndAck` tenta embutir JSON com:
|
|
46
|
+
```jsonc
|
|
47
|
+
{
|
|
48
|
+
"failedAt": "2025-09-30T12:34:56.000Z",
|
|
49
|
+
"error": { "name": "Error", "message": "...", "stack": "..." },
|
|
50
|
+
"originalHeaders": { ... },
|
|
51
|
+
"originalPayload": { ... }
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
Header `x-dlq-enriched` indica `1` (sucesso) ou `0` (fallback raw).
|
|
55
|
+
|
|
56
|
+
## Variáveis de Ambiente
|
|
57
|
+
| Nome | Descrição | Default |
|
|
58
|
+
|------|-----------|---------|
|
|
59
|
+
| `RABBITMQ_URL` | URL de conexão | (obrigatório) |
|
|
60
|
+
| `RABBITMQ_EXCHANGE` | Exchange default integração | `integration.inbound` |
|
|
61
|
+
| `RABBITMQ_ALTERNATE_EXCHANGE` | Alternate exchange | `integration.inbound.ae` |
|
|
62
|
+
| `RABBITMQ_EXCHANGE_TYPE` | Tipo do exchange | `topic` |
|
|
63
|
+
| `RABBITMQ_PUBLISH_TIMEOUT_MS` | Timeout confirmação | `5000` |
|
|
64
|
+
|
|
65
|
+
## Boas Práticas
|
|
66
|
+
- Reutilize a instância injetada (não crie manualmente o publisher baixo nível).
|
|
67
|
+
- Evite payloads muito grandes (considerar compressão se `sizeBytes > ~256KB`).
|
|
68
|
+
- Log de debug seletivo (considere flag futura `DEBUG_RABBIT_PUBLISH`).
|
|
69
|
+
|
|
70
|
+
## Licença
|
|
71
|
+
MIT
|
|
72
|
+
|
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Public export surface for shared types.
|
|
3
3
|
* Keep exports stable to avoid breaking downstream projects.
|
|
4
4
|
*/
|
|
5
|
-
export * from './rabbitmq-publisher.service.js';
|
|
6
5
|
export * from './rabbitmq-publisher-dlq.service.js';
|
|
7
|
-
export * from './integration-publisher.
|
|
6
|
+
export * from './integration-event.publisher.js';
|
|
8
7
|
export * from './rabbitmq-connection.manager.js';
|
|
9
8
|
export * from './rabbitmq.constants.js';
|
|
10
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Public export surface for shared types.
|
|
3
3
|
* Keep exports stable to avoid breaking downstream projects.
|
|
4
4
|
*/
|
|
5
|
-
export * from './rabbitmq-publisher.service.js';
|
|
6
5
|
export * from './rabbitmq-publisher-dlq.service.js';
|
|
7
|
-
export * from './integration-publisher.
|
|
6
|
+
export * from './integration-event.publisher.js';
|
|
8
7
|
export * from './rabbitmq-connection.manager.js';
|
|
9
8
|
export * from './rabbitmq.constants.js';
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
2
|
+
import { RabbitMQPublisherService } from './rabbitmq-publisher.service.js';
|
|
3
|
+
import { EnvelopeMessage } from '@cargolift-cdi/types';
|
|
4
|
+
/**
|
|
5
|
+
* IntegrationEventPublisher
|
|
6
|
+
* --------------------------------------------------
|
|
7
|
+
* Publicador de alto nível para eventos de integração.
|
|
8
|
+
* Regras aplicadas:
|
|
9
|
+
* - Defaults de exchange / alternate exchange / exchangeType
|
|
10
|
+
* - Extração de IP e user-agent de uma Request HTTP (se fornecida)
|
|
11
|
+
* - Normalização de envelope (correlation_id, eventType, source, timestamp)
|
|
12
|
+
* - Headers padronizados (x-correlation-id, x-trace, x-source)
|
|
13
|
+
* - Encaminha para RabbitMQPublisherService (baixo nível) com possibilidade de confirmação
|
|
14
|
+
*
|
|
15
|
+
* Use este serviço quando publicar eventos sem querer lidar com detalhes de configuração.
|
|
16
|
+
*/
|
|
17
|
+
export interface PublishIntegrationEventOptions {
|
|
18
|
+
exchange?: string;
|
|
19
|
+
routingKey: string;
|
|
20
|
+
req?: Request;
|
|
21
|
+
payload?: any;
|
|
22
|
+
envelope?: Partial<EnvelopeMessage>;
|
|
23
|
+
headers?: Record<string, any>;
|
|
24
|
+
raw?: {
|
|
25
|
+
exchangeType?: string;
|
|
26
|
+
assertExchangeOptions?: any;
|
|
27
|
+
publishOptions?: any;
|
|
28
|
+
persistent?: boolean;
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
returnMeta?: boolean;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare class IntegrationEventPublisher {
|
|
34
|
+
private readonly publisher;
|
|
35
|
+
private readonly logger;
|
|
36
|
+
private readonly defaultExchange;
|
|
37
|
+
private readonly defaultExchangeType;
|
|
38
|
+
private readonly defaultAlternateExchange;
|
|
39
|
+
constructor(publisher: RabbitMQPublisherService, logger: LoggerContextService);
|
|
40
|
+
publish(opts: PublishIntegrationEventOptions): Promise<void | any>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=integration-event.publisher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-event.publisher.d.ts","sourceRoot":"","sources":["../src/integration-event.publisher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE;QACJ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,qBAAqB,CAAC,EAAE,GAAG,CAAC;QAC5B,cAAc,CAAC,EAAE,GAAG,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAED,qBACa,yBAAyB;IAMlC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0D;IAC1F,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuE;gBAG7F,SAAS,EAAE,wBAAwB,EACnC,MAAM,EAAE,oBAAoB;IAGzC,OAAO,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;CA+CzE"}
|
|
@@ -10,8 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
import { Injectable } from '@nestjs/common';
|
|
11
11
|
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
12
12
|
import { RabbitMQPublisherService } from './rabbitmq-publisher.service.js';
|
|
13
|
-
|
|
14
|
-
let IntegrationPublisherService = class IntegrationPublisherService {
|
|
13
|
+
let IntegrationEventPublisher = class IntegrationEventPublisher {
|
|
15
14
|
constructor(publisher, logger) {
|
|
16
15
|
this.publisher = publisher;
|
|
17
16
|
this.logger = logger;
|
|
@@ -19,11 +18,6 @@ let IntegrationPublisherService = class IntegrationPublisherService {
|
|
|
19
18
|
this.defaultExchangeType = 'topic';
|
|
20
19
|
this.defaultAlternateExchange = process.env.RABBITMQ_ALTERNATE_EXCHANGE || 'integration.inbound.ae';
|
|
21
20
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Publica um evento usando defaults padronizados.
|
|
24
|
-
* Exemplo de uso:
|
|
25
|
-
* await integrationPublisher.publish({ routingKey: 'integration.erp.demo', payload, envelope: { source } })
|
|
26
|
-
*/
|
|
27
21
|
async publish(opts) {
|
|
28
22
|
const ctx = this.logger.getContext();
|
|
29
23
|
const exchange = opts.exchange || this.defaultExchange;
|
|
@@ -37,7 +31,7 @@ let IntegrationPublisherService = class IntegrationPublisherService {
|
|
|
37
31
|
ip: opts.envelope?.source?.ip || ip,
|
|
38
32
|
user_agent: opts.envelope?.source?.user_agent || userAgent,
|
|
39
33
|
},
|
|
40
|
-
timestamp: opts.envelope?.timestamp,
|
|
34
|
+
timestamp: opts.envelope?.timestamp,
|
|
41
35
|
...opts.envelope,
|
|
42
36
|
};
|
|
43
37
|
const headers = {
|
|
@@ -46,7 +40,7 @@ let IntegrationPublisherService = class IntegrationPublisherService {
|
|
|
46
40
|
'x-source': JSON.stringify(envelope.source),
|
|
47
41
|
...(opts.headers || {}),
|
|
48
42
|
};
|
|
49
|
-
|
|
43
|
+
return this.publisher.publish(exchange, routingKey, envelope, (opts.payload || opts.req?.body), {
|
|
50
44
|
exchangeType: opts.raw?.exchangeType || this.defaultExchangeType,
|
|
51
45
|
assertExchangeOptions: {
|
|
52
46
|
durable: true,
|
|
@@ -57,16 +51,16 @@ let IntegrationPublisherService = class IntegrationPublisherService {
|
|
|
57
51
|
persistent: opts.raw?.persistent ?? true,
|
|
58
52
|
publishOptions: opts.raw?.publishOptions,
|
|
59
53
|
timeoutMs: opts.raw?.timeoutMs,
|
|
54
|
+
returnMeta: opts.raw?.returnMeta,
|
|
60
55
|
});
|
|
61
56
|
}
|
|
62
57
|
};
|
|
63
|
-
|
|
58
|
+
IntegrationEventPublisher = __decorate([
|
|
64
59
|
Injectable(),
|
|
65
60
|
__metadata("design:paramtypes", [RabbitMQPublisherService,
|
|
66
61
|
LoggerContextService])
|
|
67
|
-
],
|
|
68
|
-
export {
|
|
69
|
-
// Helper isolado para evitar replicação de lógica ao extrair IP.
|
|
62
|
+
], IntegrationEventPublisher);
|
|
63
|
+
export { IntegrationEventPublisher };
|
|
70
64
|
function extractIp(req) {
|
|
71
65
|
if (!req)
|
|
72
66
|
return '0.0.0.0';
|
|
@@ -74,11 +68,10 @@ function extractIp(req) {
|
|
|
74
68
|
if (typeof xfwd === 'string' && xfwd.length > 0) {
|
|
75
69
|
return xfwd.split(',')[0].trim();
|
|
76
70
|
}
|
|
77
|
-
// Express/Nest usual fields
|
|
78
71
|
return (req.ip ||
|
|
79
72
|
req.connection?.remoteAddress ||
|
|
80
73
|
req.socket?.remoteAddress ||
|
|
81
74
|
req.info?.remoteAddress ||
|
|
82
75
|
'0.0.0.0');
|
|
83
76
|
}
|
|
84
|
-
//# sourceMappingURL=integration-publisher.
|
|
77
|
+
//# sourceMappingURL=integration-event.publisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-event.publisher.js","sourceRoot":"","sources":["../src/integration-event.publisher.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAkCpE,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAKpC,YACmB,SAAmC,EACnC,MAA4B;QAD5B,cAAS,GAAT,SAAS,CAA0B;QACnC,WAAM,GAAN,MAAM,CAAsB;QAN9B,oBAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;QACzE,wBAAmB,GAAG,OAAO,CAAC;QAC9B,6BAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,wBAAwB,CAAC;IAK7G,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,IAAoC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAoB,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,MAAM,SAAS,GAAI,IAAI,CAAC,GAAW,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC;QAC1E,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,GAAU,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAoB;YAChC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,IAAI,GAAG,EAAE,cAAc;YACpE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,UAAU;YACjD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;gBACnC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,IAAI,SAAS;aAC3D;YACD,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS;YACnC,GAAG,IAAI,CAAC,QAAQ;SACjB,CAAC;QAEF,MAAM,OAAO,GAAwB;YACnC,kBAAkB,EAAE,QAAQ,CAAC,cAAc;YAC3C,SAAS,EAAG,QAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK;YACjD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;SACxB,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,CAAC,IAAI,CAAC,OAAO,IAAK,IAAI,CAAC,GAAW,EAAE,IAAI,CAAC,EACzC;YACE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC,mBAAmB;YAChE,qBAAqB,EAAE;gBACrB,OAAO,EAAE,IAAI;gBACb,iBAAiB,EAAE,IAAI,CAAC,wBAAwB;gBAChD,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,IAAI,EAAE,CAAC;aAC3C;YACD,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,IAAI;YACxC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc;YACxC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS;YAC9B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU;SACjC,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AAzDY,yBAAyB;IADrC,UAAU,EAAE;qCAOmB,wBAAwB;QAC3B,oBAAoB;GAPpC,yBAAyB,CAyDrC;;AAED,SAAS,SAAS,CAAC,GAAS;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,CACL,GAAG,CAAC,EAAE;QACN,GAAG,CAAC,UAAU,EAAE,aAAa;QAC7B,GAAG,CAAC,MAAM,EAAE,aAAa;QACzB,GAAG,CAAC,IAAI,EAAE,aAAa;QACvB,SAAS,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as amqp from 'amqplib';
|
|
2
|
-
import { EnvelopeMessage } from '@cargolift-cdi/types';
|
|
2
|
+
import { EnvelopeMessage, PublishMeta } from '@cargolift-cdi/types';
|
|
3
3
|
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
4
4
|
export declare class RabbitMQPublisherService {
|
|
5
5
|
private readonly logger;
|
|
@@ -29,14 +29,6 @@ export declare class RabbitMQPublisherService {
|
|
|
29
29
|
timeoutMs?: number;
|
|
30
30
|
serialize?: (data: any) => Buffer;
|
|
31
31
|
returnMeta?: boolean;
|
|
32
|
-
}): Promise<void |
|
|
33
|
-
correlationId: string;
|
|
34
|
-
exchange: string;
|
|
35
|
-
routingKey: string;
|
|
36
|
-
pattern: string;
|
|
37
|
-
sizeBytes: number;
|
|
38
|
-
durationMs: number;
|
|
39
|
-
confirmedAt: string;
|
|
40
|
-
}>;
|
|
32
|
+
}): Promise<void | PublishMeta>;
|
|
41
33
|
}
|
|
42
34
|
//# sourceMappingURL=rabbitmq-publisher.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-publisher.service.d.ts","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rabbitmq-publisher.service.d.ts","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAO7D,qBACa,wBAAwB;IACO,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAEvF;;;;;;;;;;;;;;OAcG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,GAAG,EACZ,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,qBAAqB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QACpD,cAAc,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC;QAClC,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;CAgH/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-publisher.service.js","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAK9D,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YAA2D,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAI,CAAC;IAE5F;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,UAAkB,EAClB,QAAyB,EACzB,OAAY,EACZ,IAUC;
|
|
1
|
+
{"version":3,"file":"rabbitmq-publisher.service.js","sourceRoot":"","sources":["../src/rabbitmq-publisher.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.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Funções utilitárias para trabalhar com RabbitMQ",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
"scripts": {
|
|
35
35
|
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
36
36
|
"build": "npm run clean && tsc -p tsconfig.json",
|
|
37
|
-
"prepublishOnly": "npm run clean && npm run build"
|
|
37
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
38
|
+
"cdi": "npm update @cargolift-cdi/common @cargolift-cdi/types"
|
|
38
39
|
},
|
|
39
40
|
"engines": {
|
|
40
41
|
"node": ">=18"
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
2
|
-
import { RabbitMQPublisherService } from './rabbitmq-publisher.service.js';
|
|
3
|
-
import { EnvelopeMessage } from '@cargolift-cdi/types';
|
|
4
|
-
/**
|
|
5
|
-
* Facade para publicação simplificada de eventos no RabbitMQ.
|
|
6
|
-
* Centraliza defaults e reduz verbosidade nos controllers.
|
|
7
|
-
*/
|
|
8
|
-
export interface PublishEventOptions {
|
|
9
|
-
exchange?: string;
|
|
10
|
-
routingKey: string;
|
|
11
|
-
req?: Request;
|
|
12
|
-
payload?: any;
|
|
13
|
-
envelope?: Partial<EnvelopeMessage>;
|
|
14
|
-
headers?: Record<string, any>;
|
|
15
|
-
raw?: {
|
|
16
|
-
exchangeType?: string;
|
|
17
|
-
assertExchangeOptions?: any;
|
|
18
|
-
publishOptions?: any;
|
|
19
|
-
persistent?: boolean;
|
|
20
|
-
timeoutMs?: number;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export declare class IntegrationPublisherService {
|
|
24
|
-
private readonly publisher;
|
|
25
|
-
private readonly logger;
|
|
26
|
-
private readonly defaultExchange;
|
|
27
|
-
private readonly defaultExchangeType;
|
|
28
|
-
private readonly defaultAlternateExchange;
|
|
29
|
-
constructor(publisher: RabbitMQPublisherService, logger: LoggerContextService);
|
|
30
|
-
/**
|
|
31
|
-
* Publica um evento usando defaults padronizados.
|
|
32
|
-
* Exemplo de uso:
|
|
33
|
-
* await integrationPublisher.publish({ routingKey: 'integration.erp.demo', payload, envelope: { source } })
|
|
34
|
-
*/
|
|
35
|
-
publish(opts: PublishEventOptions): Promise<void>;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=integration-publisher.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration-publisher.service.d.ts","sourceRoot":"","sources":["../src/integration-publisher.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAA4B;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,GAAG,CAAC,EAAE;QACJ,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,qBAAqB,CAAC,EAAE,GAAG,CAAC;QAC5B,cAAc,CAAC,EAAE,GAAG,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAGD,qBACa,2BAA2B;IAMpC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0D;IAC1F,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAuE;gBAG7F,SAAS,EAAE,wBAAwB,EACnC,MAAM,EAAE,oBAAoB;IAG/C;;;;OAIG;IACG,OAAO,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CA8CxD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration-publisher.service.js","sourceRoot":"","sources":["../src/integration-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAuB3E,oEAAoE;AAE7D,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAKtC,YACmB,SAAmC,EACnC,MAA4B;QAD5B,cAAS,GAAT,SAAS,CAA0B;QACnC,WAAM,GAAN,MAAM,CAAsB;QAN9B,oBAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;QACzE,wBAAmB,GAAG,OAAO,CAAC;QAC9B,6BAAwB,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,wBAAwB,CAAC;IAK5G,CAAC;IAEL;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,IAAyB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAoB,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,MAAM,SAAS,GAAI,IAAI,CAAC,GAAW,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC;QAC1E,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,GAAU,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAoB;YAChC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,IAAI,GAAG,EAAE,cAAc;YACpE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,IAAI,UAAU;YACjD,MAAM,EAAE;gBACN,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;gBACnC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,IAAI,SAAS;aAC3D;YACD,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,2CAA2C;YAChF,GAAG,IAAI,CAAC,QAAQ;SACjB,CAAC;QAEF,MAAM,OAAO,GAAwB;YACnC,kBAAkB,EAAE,QAAQ,CAAC,cAAc;YAC3C,SAAS,EAAG,QAAgB,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK;YACjD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;SACxB,CAAC;QAEF,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAC1B,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,CAAC,IAAI,CAAC,OAAO,IAAK,IAAI,CAAC,GAAW,EAAE,IAAI,CAAC,EACzC;YACE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,IAAI,IAAI,CAAC,mBAAmB;YAChE,qBAAqB,EAAE;gBACrB,OAAO,EAAE,IAAI;gBACb,iBAAiB,EAAE,IAAI,CAAC,wBAAwB;gBAChD,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,IAAI,EAAE,CAAC;aAC3C;YACD,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,IAAI;YACxC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,cAAc;YACxC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS;SAC/B,CACF,CAAC;IACJ,CAAC;CACF,CAAA;AA7DY,2BAA2B;IADvC,UAAU,EAAE;qCAOmB,wBAAwB;QAC3B,oBAAoB;GAPpC,2BAA2B,CA6DvC;;AAED,iEAAiE;AACjE,SAAS,SAAS,CAAC,GAAS;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,4BAA4B;IAC5B,OAAO,CACL,GAAG,CAAC,EAAE;QACN,GAAG,CAAC,UAAU,EAAE,aAAa;QAC7B,GAAG,CAAC,MAAM,EAAE,aAAa;QACzB,GAAG,CAAC,IAAI,EAAE,aAAa;QACvB,SAAS,CACV,CAAC;AACJ,CAAC"}
|