@nestjstools/messaging 2.9.1 → 2.10.0
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 +33 -15
- package/lib/consumer/distributed.consumer.d.ts +3 -1
- package/lib/consumer/distributed.consumer.js +10 -4
- package/lib/consumer/distributed.consumer.js.map +1 -1
- package/lib/dependency-injection/decorator.d.ts +2 -0
- package/lib/dependency-injection/decorator.js +8 -1
- package/lib/dependency-injection/decorator.js.map +1 -1
- package/lib/dependency-injection/register.d.ts +1 -0
- package/lib/dependency-injection/register.js +20 -1
- package/lib/dependency-injection/register.js.map +1 -1
- package/lib/dependency-injection/service.d.ts +2 -0
- package/lib/dependency-injection/service.js +2 -0
- package/lib/dependency-injection/service.js.map +1 -1
- package/lib/exception-listener/exception-context.d.ts +7 -0
- package/lib/exception-listener/exception-context.js +13 -0
- package/lib/exception-listener/exception-context.js.map +1 -0
- package/lib/exception-listener/exception-listener-handler.d.ts +7 -0
- package/lib/exception-listener/exception-listener-handler.js +33 -0
- package/lib/exception-listener/exception-listener-handler.js.map +1 -0
- package/lib/exception-listener/exception-listener.d.ts +4 -0
- package/lib/exception-listener/exception-listener.js +3 -0
- package/lib/exception-listener/exception-listener.js.map +1 -0
- package/lib/exception-listener/exception-listener.registry.d.ts +6 -0
- package/lib/exception-listener/exception-listener.registry.js +19 -0
- package/lib/exception-listener/exception-listener.registry.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/messaging.module.js +11 -0
- package/lib/messaging.module.js.map +1 -1
- package/lib/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -43,10 +43,10 @@ yarn add @nestjstools/messaging
|
|
|
43
43
|
### Basic Usage (In-memory)
|
|
44
44
|
|
|
45
45
|
```typescript
|
|
46
|
-
import { MessagingModule } from '@nestjstools/messaging';
|
|
47
|
-
import { InMemoryChannelConfig } from '@nestjstools/messaging/channels';
|
|
46
|
+
import { MessagingModule, InMemoryChannelConfig } from '@nestjstools/messaging';
|
|
48
47
|
import { SendMessageHandler } from './handlers/send-message.handler';
|
|
49
48
|
|
|
49
|
+
|
|
50
50
|
@Module({
|
|
51
51
|
imports: [
|
|
52
52
|
MessagingModule.forRoot({
|
|
@@ -86,11 +86,10 @@ export class SendMessage {
|
|
|
86
86
|
#### Define your message handler
|
|
87
87
|
```typescript
|
|
88
88
|
import { SendMessage } from './send-message';
|
|
89
|
-
import { MessageResponse } from '@nestjstools/messaging
|
|
90
|
-
import { MessageHandler } from '@nestjstools/messaging/decorators';
|
|
91
|
-
import { IMessageHandler } from '@nestjstools/messaging/interfaces';
|
|
89
|
+
import { MessageResponse, MessageHandler, IMessageHandler } from '@nestjstools/messaging';
|
|
92
90
|
import { Injectable } from '@nestjs/common';
|
|
93
91
|
|
|
92
|
+
|
|
94
93
|
@Injectable()
|
|
95
94
|
@MessageHandler('your.message')
|
|
96
95
|
export class SendMessageHandler implements IMessageHandler<SendMessage> {
|
|
@@ -107,11 +106,10 @@ Messages can be dispatched from anywhere in your application—whether from serv
|
|
|
107
106
|
|
|
108
107
|
```typescript
|
|
109
108
|
import { Controller, Get } from '@nestjs/common';
|
|
110
|
-
import { MessageBus } from '@nestjstools/messaging
|
|
111
|
-
import { IMessageBus } from '@nestjstools/messaging/bus';
|
|
112
|
-
import { RoutingMessage } from '@nestjstools/messaging/message';
|
|
109
|
+
import { MessageBus, IMessageBus, RoutingMessage } from '@nestjstools/messaging';
|
|
113
110
|
import { SendMessage } from './test/send-message';
|
|
114
111
|
|
|
112
|
+
|
|
115
113
|
@Controller()
|
|
116
114
|
export class AppController {
|
|
117
115
|
//You can inject every bus which you defined in configuration
|
|
@@ -170,10 +168,10 @@ yarn add @nestjstools/messaging-rabbitmq-extension
|
|
|
170
168
|
```
|
|
171
169
|
|
|
172
170
|
```typescript
|
|
173
|
-
import { MessagingModule } from '@nestjstools/messaging';
|
|
174
|
-
import { InMemoryChannelConfig, AmqpChannelConfig, ExchangeType } from '@nestjstools/messaging/channels';
|
|
171
|
+
import { MessagingModule, InMemoryChannelConfig, AmqpChannelConfig, ExchangeType } from '@nestjstools/messaging';
|
|
175
172
|
import { SendMessageHandler } from './handlers/send-message.handler';
|
|
176
173
|
|
|
174
|
+
|
|
177
175
|
@Module({
|
|
178
176
|
imports: [
|
|
179
177
|
MessagingModule.forRoot({
|
|
@@ -315,7 +313,7 @@ export class Base64Normalizer implements MessageNormalizer {
|
|
|
315
313
|
You can define a **Normalizer** per Channel
|
|
316
314
|
___
|
|
317
315
|
|
|
318
|
-
##
|
|
316
|
+
## ⤵️ Middlewares
|
|
319
317
|
|
|
320
318
|
A **middleware** in the context of the `MessagingModule` is a function that processes messages as they pass through the message pipeline. The middleware can intercept, modify, or log messages before they are handled by the respective **message handler**. This is particularly useful for logging, authentication, validation, or any other pre-processing step before the actual business logic is applied.
|
|
321
319
|
|
|
@@ -334,8 +332,7 @@ Here's an example middleware class that logs a message when the middleware is ap
|
|
|
334
332
|
|
|
335
333
|
```typescript
|
|
336
334
|
import { Injectable } from '@nestjs/common';
|
|
337
|
-
import { Middleware } from '@nestjstools/messaging
|
|
338
|
-
import { RoutingMessage } from '@nestjstools/messaging/message/routing-message';
|
|
335
|
+
import { Middleware, RoutingMessage } from '@nestjstools/messaging';
|
|
339
336
|
|
|
340
337
|
@Injectable()
|
|
341
338
|
@MessagingMiddleware()
|
|
@@ -353,8 +350,7 @@ export class TestMiddleware implements Middleware {
|
|
|
353
350
|
Now that we've defined the middleware, it needs to be attached to a specific channel in the `MessagingModule` configuration. Here's how you would configure the middleware for a channel:
|
|
354
351
|
|
|
355
352
|
```typescript
|
|
356
|
-
import { MessagingModule } from '@nestjstools/messaging';
|
|
357
|
-
import { AmqpChannelConfig, InMemoryChannelConfig } from '@nestjstools/messaging/channels';
|
|
353
|
+
import { MessagingModule, AmqpChannelConfig, InMemoryChannelConfig } from '@nestjstools/messaging';
|
|
358
354
|
import { TestMiddleware } from './middlewares/test.middleware';
|
|
359
355
|
import { SendMessageHandler } from './handlers/send-message.handler';
|
|
360
356
|
|
|
@@ -411,6 +407,28 @@ export class AppModule {}
|
|
|
411
407
|
|
|
412
408
|
---
|
|
413
409
|
|
|
410
|
+
## 🔰 ExceptionListener
|
|
411
|
+
|
|
412
|
+
The **ExceptionListener** provides a centralized way to handle exceptions thrown during asynchronous message processing from any **channel** in your **messaging system**.
|
|
413
|
+
|
|
414
|
+
By decorating a class with `@MessagingExceptionListener()` and implementing the `ExceptionListener` interface, you can intercept and respond to any unhandled exception occurring during message handling — whether it's logging, reporting, retries, or custom recovery logic.
|
|
415
|
+
|
|
416
|
+
Example Use Case:
|
|
417
|
+
You can log the error, send a notification, or trigger fallback logic whenever a message handler throws an exception.
|
|
418
|
+
|
|
419
|
+
### Example ExceptionListener Code:
|
|
420
|
+
```typescript
|
|
421
|
+
import { Injectable } from '@nestjs/common';
|
|
422
|
+
import { ExceptionListener, MessagingExceptionListener, ExceptionContext } from '@nestjstools/messaging';
|
|
423
|
+
|
|
424
|
+
@MessagingExceptionListener()
|
|
425
|
+
export class CustomExceptionListener implements ExceptionListener {
|
|
426
|
+
onException(context: ExceptionContext): Promise<void> {
|
|
427
|
+
console.log(`Here I can handle exception If I want and do some action`);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
414
432
|
## Configuration options
|
|
415
433
|
Here’s a table with the documentation for the `MessagingModule.forRoot` configuration you requested, breaking it into **buses**, **channels** (with descriptions of both channels), and their respective properties, descriptions, and default values:
|
|
416
434
|
|
|
@@ -2,11 +2,13 @@ import { DiscoveryService } from '@nestjs/core';
|
|
|
2
2
|
import { IMessageBus } from '../bus/i-message-bus';
|
|
3
3
|
import { ChannelRegistry } from '../channel/channel.registry';
|
|
4
4
|
import { MessagingLogger } from '../logger/messaging-logger';
|
|
5
|
+
import { ExceptionListenerHandler } from '../exception-listener/exception-listener-handler';
|
|
5
6
|
export declare class DistributedConsumer {
|
|
6
7
|
private readonly messageBus;
|
|
7
8
|
private readonly channelRegistry;
|
|
9
|
+
private readonly exceptionListenerHandler;
|
|
8
10
|
private readonly logger;
|
|
9
11
|
private readonly discoveryService;
|
|
10
|
-
constructor(messageBus: IMessageBus, channelRegistry: ChannelRegistry, logger: MessagingLogger, discoveryService: DiscoveryService);
|
|
12
|
+
constructor(messageBus: IMessageBus, channelRegistry: ChannelRegistry, exceptionListenerHandler: ExceptionListenerHandler, logger: MessagingLogger, discoveryService: DiscoveryService);
|
|
11
13
|
run(): Promise<void>;
|
|
12
14
|
}
|
|
@@ -25,10 +25,13 @@ const consumer_dispatched_message_error_1 = require("./consumer-dispatched-messa
|
|
|
25
25
|
const sealed_routing_message_1 = require("../message/sealed-routing-message");
|
|
26
26
|
const log_1 = require("../logger/log");
|
|
27
27
|
const handlers_exception_1 = require("../exception/handlers.exception");
|
|
28
|
+
const exception_listener_handler_1 = require("../exception-listener/exception-listener-handler");
|
|
29
|
+
const exception_context_1 = require("../exception-listener/exception-context");
|
|
28
30
|
let DistributedConsumer = class DistributedConsumer {
|
|
29
|
-
constructor(messageBus, channelRegistry, logger, discoveryService) {
|
|
31
|
+
constructor(messageBus, channelRegistry, exceptionListenerHandler, logger, discoveryService) {
|
|
30
32
|
this.messageBus = messageBus;
|
|
31
33
|
this.channelRegistry = channelRegistry;
|
|
34
|
+
this.exceptionListenerHandler = exceptionListenerHandler;
|
|
32
35
|
this.logger = logger;
|
|
33
36
|
this.discoveryService = discoveryService;
|
|
34
37
|
}
|
|
@@ -70,9 +73,10 @@ let DistributedConsumer = class DistributedConsumer {
|
|
|
70
73
|
this.logger.error(log_1.Log.create(`Some error occurred in channel [${channel.config.name}]`, {
|
|
71
74
|
error: e,
|
|
72
75
|
message: JSON.stringify(consumerMessage.message),
|
|
73
|
-
routingKey: consumerMessage.routingKey
|
|
76
|
+
routingKey: consumerMessage.routingKey,
|
|
74
77
|
}));
|
|
75
78
|
}
|
|
79
|
+
await this.exceptionListenerHandler.handleError(new exception_context_1.ExceptionContext(e, channel.config.name, consumerMessage.message, consumerMessage.routingKey));
|
|
76
80
|
}
|
|
77
81
|
});
|
|
78
82
|
this.logger.log(`Consumer for channel [${channel.config.name}] is ready to handle messages`);
|
|
@@ -83,7 +87,9 @@ exports.DistributedConsumer = DistributedConsumer;
|
|
|
83
87
|
exports.DistributedConsumer = DistributedConsumer = __decorate([
|
|
84
88
|
__param(0, (0, common_1.Inject)(service_1.Service.DEFAULT_MESSAGE_BUS)),
|
|
85
89
|
__param(1, (0, common_1.Inject)(service_1.Service.CHANNEL_REGISTRY)),
|
|
86
|
-
__param(2, (0, common_1.Inject)(service_1.Service.
|
|
87
|
-
|
|
90
|
+
__param(2, (0, common_1.Inject)(service_1.Service.EXCEPTION_LISTENER_HANDLER)),
|
|
91
|
+
__param(3, (0, common_1.Inject)(service_1.Service.LOGGER)),
|
|
92
|
+
__metadata("design:paramtypes", [Object, channel_registry_1.ChannelRegistry,
|
|
93
|
+
exception_listener_handler_1.ExceptionListenerHandler, Object, core_1.DiscoveryService])
|
|
88
94
|
], DistributedConsumer);
|
|
89
95
|
//# sourceMappingURL=distributed.consumer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distributed.consumer.js","sourceRoot":"","sources":["../../src/consumer/distributed.consumer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,uCAAgD;AAChD,6DAA0D;AAE1D,kEAA8D;AAE9D,oEAA+D;AAC/D,iEAA8E;AAC9E,2EAAsE;AAGtE,gFAA2E;AAC3E,2FAAqF;AACrF,8EAAyE;AACzE,uCAAoC;AACpC,wEAAoE;
|
|
1
|
+
{"version":3,"file":"distributed.consumer.js","sourceRoot":"","sources":["../../src/consumer/distributed.consumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,11 @@ export declare const MESSAGE_BUS_FACTORY_METADATA = "MESSAGE_BUS_FACTORY_METADAT
|
|
|
5
5
|
export declare const MESSAGE_CONSUMER_METADATA = "MESSAGE_CONSUMER_METADATA";
|
|
6
6
|
export declare const MESSAGING_MIDDLEWARE_METADATA = "MESSAGING_MIDDLEWARE_METADATA";
|
|
7
7
|
export declare const MESSAGING_NORMALIZER_METADATA = "MESSAGING_NORMALIZER_METADATA";
|
|
8
|
+
export declare const MESSAGING_EXCEPTION_LISTENER_METADATA = "MESSAGING_EXCEPTION_LISTENER_METADATA";
|
|
8
9
|
export declare const MessageHandler: (routingKey: string) => ClassDecorator;
|
|
9
10
|
export declare const ChannelFactory: (channelConfig: ChannelConfig) => ClassDecorator;
|
|
10
11
|
export declare const MessageBusFactory: (channel: any) => ClassDecorator;
|
|
11
12
|
export declare const MessageConsumer: (channel: any) => ClassDecorator;
|
|
12
13
|
export declare const MessagingMiddleware: (name?: string) => ClassDecorator;
|
|
13
14
|
export declare const MessagingNormalizer: (name?: string) => ClassDecorator;
|
|
15
|
+
export declare const MessagingExceptionListener: () => ClassDecorator;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MessagingNormalizer = exports.MessagingMiddleware = exports.MessageConsumer = exports.MessageBusFactory = exports.ChannelFactory = exports.MessageHandler = exports.MESSAGING_NORMALIZER_METADATA = exports.MESSAGING_MIDDLEWARE_METADATA = exports.MESSAGE_CONSUMER_METADATA = exports.MESSAGE_BUS_FACTORY_METADATA = exports.CHANNEL_FACTORY_METADATA = exports.MESSAGE_HANDLER_METADATA = void 0;
|
|
3
|
+
exports.MessagingExceptionListener = exports.MessagingNormalizer = exports.MessagingMiddleware = exports.MessageConsumer = exports.MessageBusFactory = exports.ChannelFactory = exports.MessageHandler = exports.MESSAGING_EXCEPTION_LISTENER_METADATA = exports.MESSAGING_NORMALIZER_METADATA = exports.MESSAGING_MIDDLEWARE_METADATA = exports.MESSAGE_CONSUMER_METADATA = exports.MESSAGE_BUS_FACTORY_METADATA = exports.CHANNEL_FACTORY_METADATA = exports.MESSAGE_HANDLER_METADATA = void 0;
|
|
4
4
|
exports.MESSAGE_HANDLER_METADATA = 'MESSAGE_HANDLER_METADATA';
|
|
5
5
|
exports.CHANNEL_FACTORY_METADATA = 'CHANNEL_FACTORY_METADATA';
|
|
6
6
|
exports.MESSAGE_BUS_FACTORY_METADATA = 'MESSAGE_BUS_FACTORY_METADATA';
|
|
7
7
|
exports.MESSAGE_CONSUMER_METADATA = 'MESSAGE_CONSUMER_METADATA';
|
|
8
8
|
exports.MESSAGING_MIDDLEWARE_METADATA = 'MESSAGING_MIDDLEWARE_METADATA';
|
|
9
9
|
exports.MESSAGING_NORMALIZER_METADATA = 'MESSAGING_NORMALIZER_METADATA';
|
|
10
|
+
exports.MESSAGING_EXCEPTION_LISTENER_METADATA = 'MESSAGING_EXCEPTION_LISTENER_METADATA';
|
|
10
11
|
const MessageHandler = (routingKey) => {
|
|
11
12
|
return (target) => {
|
|
12
13
|
Reflect.defineMetadata(exports.MESSAGE_HANDLER_METADATA, routingKey, target);
|
|
@@ -45,6 +46,12 @@ const MessagingNormalizer = (name) => {
|
|
|
45
46
|
};
|
|
46
47
|
};
|
|
47
48
|
exports.MessagingNormalizer = MessagingNormalizer;
|
|
49
|
+
const MessagingExceptionListener = () => {
|
|
50
|
+
return (target) => {
|
|
51
|
+
Reflect.defineMetadata(exports.MESSAGING_EXCEPTION_LISTENER_METADATA, target.name, target);
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
exports.MessagingExceptionListener = MessagingExceptionListener;
|
|
48
55
|
const classValidator = (value, type) => {
|
|
49
56
|
if (Object.getPrototypeOf(value).name !== type) {
|
|
50
57
|
throw new Error(`Given value must be instance of [${type}]`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/dependency-injection/decorator.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAC9D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"decorator.js","sourceRoot":"","sources":["../../src/dependency-injection/decorator.ts"],"names":[],"mappings":";;;AAEa,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,wBAAwB,GAAG,0BAA0B,CAAC;AACtD,QAAA,4BAA4B,GAAG,8BAA8B,CAAC;AAC9D,QAAA,yBAAyB,GAAG,2BAA2B,CAAC;AACxD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,qCAAqC,GAAG,uCAAuC,CAAC;AAEtF,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAkB,EAAE;IACnE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,gCAAwB,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEK,MAAM,cAAc,GAAG,CAC5B,aAA4B,EACZ,EAAE;IAClB,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,gCAAwB,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEK,MAAM,iBAAiB,GAAG,CAAC,OAAY,EAAkB,EAAE;IAChE,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEnC,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,oCAA4B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEK,MAAM,eAAe,GAAG,CAAC,OAAY,EAAkB,EAAE;IAC9D,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEnC,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,iCAAyB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,eAAe,mBAM1B;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAkB,EAAE;IACnE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,qCAA6B,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAkB,EAAE;IACnE,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,qCAA6B,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEK,MAAM,0BAA0B,GAAG,GAAmB,EAAE;IAC7D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,OAAO,CAAC,cAAc,CAAC,6CAAqC,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,IAAY,EAAQ,EAAE;IAC3D,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,GAAG,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -2,3 +2,4 @@ import { DiscoveryService, ModuleRef } from '@nestjs/core';
|
|
|
2
2
|
export declare const registerHandlers: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
3
3
|
export declare const registerMiddlewares: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
4
4
|
export declare const registerMessageNormalizers: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
5
|
+
export declare const registerExceptionListener: (moduleRef: ModuleRef, discoveryService: DiscoveryService) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.registerMessageNormalizers = exports.registerMiddlewares = exports.registerHandlers = void 0;
|
|
3
|
+
exports.registerExceptionListener = exports.registerMessageNormalizers = exports.registerMiddlewares = exports.registerHandlers = void 0;
|
|
4
4
|
const service_1 = require("./service");
|
|
5
5
|
const decorator_1 = require("./decorator");
|
|
6
6
|
const const_1 = require("../const");
|
|
@@ -57,4 +57,23 @@ const registerMessageNormalizers = (moduleRef, discoveryService) => {
|
|
|
57
57
|
});
|
|
58
58
|
};
|
|
59
59
|
exports.registerMessageNormalizers = registerMessageNormalizers;
|
|
60
|
+
const registerExceptionListener = (moduleRef, discoveryService) => {
|
|
61
|
+
const registry = moduleRef.get(service_1.Service.EXCEPTION_LISTENER_REGISTRY);
|
|
62
|
+
const logger = moduleRef.get(service_1.Service.LOGGER);
|
|
63
|
+
const messageExceptionListenerInstances = discoveryService
|
|
64
|
+
.getProviders()
|
|
65
|
+
.filter((messageExceptionListener) => {
|
|
66
|
+
if (!messageExceptionListener.metatype) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return Reflect.hasMetadata(decorator_1.MESSAGING_EXCEPTION_LISTENER_METADATA, messageExceptionListener.metatype);
|
|
70
|
+
});
|
|
71
|
+
messageExceptionListenerInstances.forEach((messageExceptionListener) => {
|
|
72
|
+
registry.register(Reflect.getMetadata(decorator_1.MESSAGING_EXCEPTION_LISTENER_METADATA, messageExceptionListener.metatype), messageExceptionListener.instance);
|
|
73
|
+
if (messageExceptionListener.name !== const_1.DEFAULT_NORMALIZER) {
|
|
74
|
+
logger.log(`ExceptionListener [${messageExceptionListener.name}] was registered`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
exports.registerExceptionListener = registerExceptionListener;
|
|
60
79
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/dependency-injection/register.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/dependency-injection/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export declare enum Service {
|
|
|
5
5
|
MESSAGE_HANDLERS_REGISTRY = "messenger_MESSAGE_HANDLERS_REGISTRY",
|
|
6
6
|
MESSAGE_NORMALIZERS_REGISTRY = "messenger_MESSAGE_NORMALIZERS_REGISTRY",
|
|
7
7
|
CHANNEL_REGISTRY = "messenger_CHANNEL_REGISTRY",
|
|
8
|
+
EXCEPTION_LISTENER_REGISTRY = "messenger_EXCEPTION_LISTENER_REGISTRY",
|
|
9
|
+
EXCEPTION_LISTENER_HANDLER = "messenger_EXCEPTION_LISTENER_HANDLER",
|
|
8
10
|
CHANNELS = "messenger_CHANNELS",
|
|
9
11
|
LOGGER = "messenger_LOGGER"
|
|
10
12
|
}
|
|
@@ -9,6 +9,8 @@ var Service;
|
|
|
9
9
|
Service["MESSAGE_HANDLERS_REGISTRY"] = "messenger_MESSAGE_HANDLERS_REGISTRY";
|
|
10
10
|
Service["MESSAGE_NORMALIZERS_REGISTRY"] = "messenger_MESSAGE_NORMALIZERS_REGISTRY";
|
|
11
11
|
Service["CHANNEL_REGISTRY"] = "messenger_CHANNEL_REGISTRY";
|
|
12
|
+
Service["EXCEPTION_LISTENER_REGISTRY"] = "messenger_EXCEPTION_LISTENER_REGISTRY";
|
|
13
|
+
Service["EXCEPTION_LISTENER_HANDLER"] = "messenger_EXCEPTION_LISTENER_HANDLER";
|
|
12
14
|
Service["CHANNELS"] = "messenger_CHANNELS";
|
|
13
15
|
Service["LOGGER"] = "messenger_LOGGER";
|
|
14
16
|
})(Service || (exports.Service = Service = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dependency-injection/service.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/dependency-injection/service.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAWX;AAXD,WAAY,OAAO;IACjB,gEAAqD,CAAA;IACrD,gEAAqD,CAAA;IACrD,0DAA+C,CAAA;IAC/C,4EAAiE,CAAA;IACjE,kFAAuE,CAAA;IACvE,0DAA+C,CAAA;IAC/C,gFAAqE,CAAA;IACrE,8EAAmE,CAAA;IACnE,0CAA+B,CAAA;IAC/B,sCAA2B,CAAA;AAC7B,CAAC,EAXW,OAAO,uBAAP,OAAO,QAWlB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare class ExceptionContext {
|
|
2
|
+
readonly exception: Error;
|
|
3
|
+
readonly channelName: string;
|
|
4
|
+
readonly rawMessage: object | string;
|
|
5
|
+
readonly routingKey: string;
|
|
6
|
+
constructor(exception: Error, channelName: string, rawMessage: object | string, routingKey: string);
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExceptionContext = void 0;
|
|
4
|
+
class ExceptionContext {
|
|
5
|
+
constructor(exception, channelName, rawMessage, routingKey) {
|
|
6
|
+
this.exception = exception;
|
|
7
|
+
this.channelName = channelName;
|
|
8
|
+
this.rawMessage = rawMessage;
|
|
9
|
+
this.routingKey = routingKey;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.ExceptionContext = ExceptionContext;
|
|
13
|
+
//# sourceMappingURL=exception-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-context.js","sourceRoot":"","sources":["../../src/exception-listener/exception-context.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IAC3B,YACkB,SAAgB,EAChB,WAAmB,EACnB,UAAyB,EACzB,UAAkB;QAHlB,cAAS,GAAT,SAAS,CAAO;QAChB,gBAAW,GAAX,WAAW,CAAQ;QACnB,eAAU,GAAV,UAAU,CAAe;QACzB,eAAU,GAAV,UAAU,CAAQ;IAEpC,CAAC;CACF;AARD,4CAQC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExceptionListenerRegistry } from './exception-listener.registry';
|
|
2
|
+
import { ExceptionContext } from './exception-context';
|
|
3
|
+
export declare class ExceptionListenerHandler {
|
|
4
|
+
private readonly exceptionListenerRegistry;
|
|
5
|
+
constructor(exceptionListenerRegistry: ExceptionListenerRegistry);
|
|
6
|
+
handleError(context: ExceptionContext): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ExceptionListenerHandler = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const exception_listener_registry_1 = require("./exception-listener.registry");
|
|
18
|
+
const service_1 = require("../dependency-injection/service");
|
|
19
|
+
let ExceptionListenerHandler = class ExceptionListenerHandler {
|
|
20
|
+
constructor(exceptionListenerRegistry) {
|
|
21
|
+
this.exceptionListenerRegistry = exceptionListenerRegistry;
|
|
22
|
+
}
|
|
23
|
+
async handleError(context) {
|
|
24
|
+
await this.exceptionListenerRegistry.getAll().forEach(exceptionListener => exceptionListener.onException(context));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.ExceptionListenerHandler = ExceptionListenerHandler;
|
|
28
|
+
exports.ExceptionListenerHandler = ExceptionListenerHandler = __decorate([
|
|
29
|
+
(0, common_1.Injectable)(),
|
|
30
|
+
__param(0, (0, common_1.Inject)(service_1.Service.EXCEPTION_LISTENER_REGISTRY)),
|
|
31
|
+
__metadata("design:paramtypes", [exception_listener_registry_1.ExceptionListenerRegistry])
|
|
32
|
+
], ExceptionListenerHandler);
|
|
33
|
+
//# sourceMappingURL=exception-listener-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-listener-handler.js","sourceRoot":"","sources":["../../src/exception-listener/exception-listener-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+EAA0E;AAC1E,6DAA0D;AAInD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,YAEmB,yBAAoD;QAApD,8BAAyB,GAAzB,yBAAyB,CAA2B;IAEvE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACrH,CAAC;CACF,CAAA;AAVY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,iBAAO,CAAC,2BAA2B,CAAC,CAAA;qCACA,uDAAyB;GAH5D,wBAAwB,CAUpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-listener.js","sourceRoot":"","sources":["../../src/exception-listener/exception-listener.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExceptionListenerRegistry = void 0;
|
|
4
|
+
class ExceptionListenerRegistry {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.registry = new Map();
|
|
7
|
+
}
|
|
8
|
+
register(name, middleware) {
|
|
9
|
+
if (this.registry.has(name)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
this.registry.set(name, middleware);
|
|
13
|
+
}
|
|
14
|
+
getAll() {
|
|
15
|
+
return Array.from(this.registry.values());
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ExceptionListenerRegistry = ExceptionListenerRegistry;
|
|
19
|
+
//# sourceMappingURL=exception-listener.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception-listener.registry.js","sourceRoot":"","sources":["../../src/exception-listener/exception-listener.registry.ts"],"names":[],"mappings":";;;AAEA,MAAa,yBAAyB;IAAtC;QACU,aAAQ,GAAmC,IAAI,GAAG,EAAE,CAAC;IAa/D,CAAC;IAXC,QAAQ,CAAC,IAAY,EAAE,UAA6B;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAdD,8DAcC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -25,3 +25,6 @@ export * from './exception/invalid-channel.exception';
|
|
|
25
25
|
export * from './exception/invalid-channel-config.exception';
|
|
26
26
|
export * from './middleware/middleware.context';
|
|
27
27
|
export * from './normalizer/message-normalizer';
|
|
28
|
+
export * from './exception-listener/exception-listener';
|
|
29
|
+
export * from './exception-listener/exception-context';
|
|
30
|
+
export * from './exception/handlers.exception';
|
package/lib/index.js
CHANGED
|
@@ -41,4 +41,7 @@ __exportStar(require("./exception/invalid-channel.exception"), exports);
|
|
|
41
41
|
__exportStar(require("./exception/invalid-channel-config.exception"), exports);
|
|
42
42
|
__exportStar(require("./middleware/middleware.context"), exports);
|
|
43
43
|
__exportStar(require("./normalizer/message-normalizer"), exports);
|
|
44
|
+
__exportStar(require("./exception-listener/exception-listener"), exports);
|
|
45
|
+
__exportStar(require("./exception-listener/exception-context"), exports);
|
|
46
|
+
__exportStar(require("./exception/handlers.exception"), exports);
|
|
44
47
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,kEAAgD;AAChD,8DAA4C;AAC5C,yEAAuD;AACvD,+EAA6D;AAC7D,uEAAqD;AACrD,mEAAiD;AACjD,oEAAkD;AAClD,8DAA4C;AAC5C,8DAA4C;AAC5C,sDAAoC;AACpC,8DAA4C;AAC5C,oEAAkD;AAClD,4DAA0C;AAC1C,4DAA0C;AAC1C,oDAAkC;AAClC,6DAA2C;AAC3C,8EAA4D;AAC5D,8EAA4D;AAC5D,8DAA4C;AAC5C,oDAAkC;AAClC,0DAAwC;AACxC,wEAAsD;AACtD,+EAA6D;AAC7D,kEAAgD;AAChD,kEAAgD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2CAAyB;AACzB,kEAAgD;AAChD,8DAA4C;AAC5C,yEAAuD;AACvD,+EAA6D;AAC7D,uEAAqD;AACrD,mEAAiD;AACjD,oEAAkD;AAClD,8DAA4C;AAC5C,8DAA4C;AAC5C,sDAAoC;AACpC,8DAA4C;AAC5C,oEAAkD;AAClD,4DAA0C;AAC1C,4DAA0C;AAC1C,oDAAkC;AAClC,6DAA2C;AAC3C,8EAA4D;AAC5D,8EAA4D;AAC5D,8DAA4C;AAC5C,oDAAkC;AAClC,0DAAwC;AACxC,wEAAsD;AACtD,+EAA6D;AAC7D,kEAAgD;AAChD,kEAAgD;AAChD,0EAAwD;AACxD,yEAAuD;AACvD,iEAA+C"}
|
package/lib/messaging.module.js
CHANGED
|
@@ -32,6 +32,8 @@ const handler_middleware_1 = require("./middleware/handler-middleware");
|
|
|
32
32
|
const message_bus_collection_1 = require("./bus/message-bus.collection");
|
|
33
33
|
const normalizer_registry_1 = require("./normalizer/normalizer.registry");
|
|
34
34
|
const object_forward_message_normalizer_1 = require("./normalizer/object-forward-message.normalizer");
|
|
35
|
+
const exception_listener_registry_1 = require("./exception-listener/exception-listener.registry");
|
|
36
|
+
const exception_listener_handler_1 = require("./exception-listener/exception-listener-handler");
|
|
35
37
|
let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
36
38
|
static forRoot(options) {
|
|
37
39
|
const registerChannels = () => {
|
|
@@ -90,6 +92,10 @@ let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
|
90
92
|
provide: service_1.Service.MESSAGE_HANDLERS_REGISTRY,
|
|
91
93
|
useClass: message_handler_registry_1.MessageHandlerRegistry,
|
|
92
94
|
},
|
|
95
|
+
{
|
|
96
|
+
provide: service_1.Service.EXCEPTION_LISTENER_REGISTRY,
|
|
97
|
+
useClass: exception_listener_registry_1.ExceptionListenerRegistry,
|
|
98
|
+
},
|
|
93
99
|
{
|
|
94
100
|
provide: service_1.Service.MESSAGE_NORMALIZERS_REGISTRY,
|
|
95
101
|
useClass: normalizer_registry_1.NormalizerRegistry,
|
|
@@ -98,6 +104,10 @@ let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
|
98
104
|
provide: service_1.Service.MIDDLEWARE_REGISTRY,
|
|
99
105
|
useClass: middleware_registry_1.MiddlewareRegistry,
|
|
100
106
|
},
|
|
107
|
+
{
|
|
108
|
+
provide: service_1.Service.EXCEPTION_LISTENER_HANDLER,
|
|
109
|
+
useClass: exception_listener_handler_1.ExceptionListenerHandler,
|
|
110
|
+
},
|
|
101
111
|
{
|
|
102
112
|
provide: service_1.Service.CHANNEL_REGISTRY,
|
|
103
113
|
useFactory: (channels, logger) => {
|
|
@@ -133,6 +143,7 @@ let MessagingModule = MessagingModule_1 = class MessagingModule {
|
|
|
133
143
|
(0, register_1.registerHandlers)(this.moduleRef, this.discoveryService);
|
|
134
144
|
(0, register_1.registerMiddlewares)(this.moduleRef, this.discoveryService);
|
|
135
145
|
(0, register_1.registerMessageNormalizers)(this.moduleRef, this.discoveryService);
|
|
146
|
+
(0, register_1.registerExceptionListener)(this.moduleRef, this.discoveryService);
|
|
136
147
|
const consumer = this.moduleRef.get(distributed_consumer_1.DistributedConsumer);
|
|
137
148
|
consumer.run();
|
|
138
149
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging.module.js","sourceRoot":"","sources":["../src/messaging.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA2G;AAC3G,qCAAwF;AACxF,4DAAyD;AACzD,2FAAsF;AACtF,iEAA6D;AAC7D,uFAAiF;AAEjF,2EAAsE;AACtE,uCAA4E;AAC5E,uEAAiE;AACjE,iFAA4E;AAE5E,sDAAkD;AAClD,2FAAqF;AACrF,0EAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"messaging.module.js","sourceRoot":"","sources":["../src/messaging.module.ts"],"names":[],"mappings":"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"}
|