UNPKG

@nestjstools/messaging-nats-extension

Version:

Extension to handle messages and dispatch them over Nats

47 lines 2.21 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NatsMessagingConsumer = void 0; const nats_channel_1 = require("../channel/nats.channel"); const messaging_1 = require("@nestjstools/messaging"); const common_1 = require("@nestjs/common"); const messaging_2 = require("@nestjstools/messaging"); let NatsMessagingConsumer = class NatsMessagingConsumer { channel = undefined; client = undefined; async consume(dispatcher, channel) { this.channel = channel; this.client = await this.channel.client; this.client.subscribe(channel.config.subscriberName, { callback: (err, msg) => { if (err) { throw new Error(`Nats error ${err.message}`); } const headers = msg.headers ?? undefined; const deserialized = JSON.parse(msg.string()); dispatcher.dispatch(new messaging_1.ConsumerMessage(deserialized, headers?.get('messaging-routing-key') ?? msg.subject)); } }); return Promise.resolve(); } async onError(errored, channel) { return Promise.resolve(); } async onApplicationShutdown(signal) { if (this.client) { await this.client.drain(); await this.client.close(); } } }; exports.NatsMessagingConsumer = NatsMessagingConsumer; exports.NatsMessagingConsumer = NatsMessagingConsumer = __decorate([ (0, common_1.Injectable)(), (0, messaging_2.MessageConsumer)(nats_channel_1.NatsChannel) ], NatsMessagingConsumer); //# sourceMappingURL=nats-messaging-consumer.js.map