/* * @author gs * @date 2020/08/28 12:03 */ import { ClientNats } from '@nestjs/microservices'; import { timeout } from 'rxjs/internal/operators'; import { MicroserviceQueue } from '../../constant'; export class TowifyClient extends ClientNats { private static instance: TowifyClient; static getInstance() { // Default retry attempts 3, retry delay 3s if (!TowifyClient.instance) { TowifyClient.instance = new TowifyClient({ maxReconnectAttempts: 3, reconnectTimeWait: 3000, url: process.env.NATS_URL, queue: MicroserviceQueue.Global }); } return TowifyClient.instance; } async sendMessage( pattern: any, data: TInput ): Promise { // Timeout default 5s const result = await super .send(pattern, data) .pipe(timeout(50000)) .toPromise(); return result; } }