From 7dd589fb6c134ac6bc3757cb5ab849e9d47ea355 Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Mon, 4 Mar 2024 12:16:26 -0300 Subject: [PATCH 1/5] Make rabbitMQ per events --- Docker/.env.example | 1 + Dockerfile | 1 + src/config/env.config.ts | 2 + src/dev-env.yml | 1 + src/libs/amqp.server.ts | 66 +++++++++++++++++++++-- src/whatsapp/services/whatsapp.service.ts | 41 +++----------- 6 files changed, 73 insertions(+), 39 deletions(-) diff --git a/Docker/.env.example b/Docker/.env.example index 5aa74a5c..ca2dc377 100644 --- a/Docker/.env.example +++ b/Docker/.env.example @@ -47,6 +47,7 @@ REDIS_URI=redis://redis:6379 REDIS_PREFIX_KEY=evdocker RABBITMQ_ENABLED=false +RABBITMQ_GLOBAL_EVENT_QUEUE=false RABBITMQ_URI=amqp://guest:guest@rabbitmq:5672 WEBSOCKET_ENABLED=false diff --git a/Dockerfile b/Dockerfile index 7758c484..0c6752aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,6 +62,7 @@ ENV REDIS_URI=redis://redis:6379 ENV REDIS_PREFIX_KEY=evolution ENV RABBITMQ_ENABLED=false +ENV RABBITMQ_GLOBAL_EVENT_QUEUE=false ENV RABBITMQ_URI=amqp://guest:guest@rabbitmq:5672 ENV WEBSOCKET_ENABLED=false diff --git a/src/config/env.config.ts b/src/config/env.config.ts index ae4f0951..95a3e7f8 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -71,6 +71,7 @@ export type Redis = { export type Rabbitmq = { ENABLED: boolean; + GLOBAL_EVENT_QUEUE: boolean; URI: string; }; @@ -282,6 +283,7 @@ export class ConfigService { }, RABBITMQ: { ENABLED: process.env?.RABBITMQ_ENABLED === 'true', + GLOBAL_EVENT_QUEUE: process.env?.RABBITMQ_GLOBAL_EVENT_QUEUE === 'true', URI: process.env.RABBITMQ_URI || '', }, SQS: { diff --git a/src/dev-env.yml b/src/dev-env.yml index b05176bc..02b9fa54 100644 --- a/src/dev-env.yml +++ b/src/dev-env.yml @@ -83,6 +83,7 @@ REDIS: RABBITMQ: ENABLED: false + GLOBAL_EVENT_QUEUE: false URI: "amqp://guest:guest@localhost:5672" SQS: diff --git a/src/libs/amqp.server.ts b/src/libs/amqp.server.ts index c861916b..866cf0c4 100644 --- a/src/libs/amqp.server.ts +++ b/src/libs/amqp.server.ts @@ -1,6 +1,6 @@ import * as amqp from 'amqplib/callback_api'; -import { configService, Rabbitmq } from '../config/env.config'; +import { configService, HttpServer, Rabbitmq } from '../config/env.config'; import { Logger } from '../config/logger.config'; const logger = new Logger('AMQP'); @@ -9,8 +9,8 @@ let amqpChannel: amqp.Channel | null = null; export const initAMQP = () => { return new Promise((resolve, reject) => { - const uri = configService.get('RABBITMQ').URI; - amqp.connect(uri, (error, connection) => { + const rabbitConfig = configService.get('RABBITMQ'); + amqp.connect(rabbitConfig.URI, (error, connection) => { if (error) { reject(error); return; @@ -45,6 +45,7 @@ export const getAMQP = (): amqp.Channel | null => { export const initQueues = (instanceName: string, events: string[]) => { if (!instanceName || !events || !events.length) return; + const rabbitConfig = configService.get('RABBITMQ'); const queues = events.map((event) => { return `${event.replace(/_/g, '.').toLowerCase()}`; @@ -60,7 +61,7 @@ export const initQueues = (instanceName: string, events: string[]) => { assert: true, }); - const queueName = `${instanceName}.${event}`; + const queueName = rabbitConfig.GLOBAL_EVENT_QUEUE ? event : `${instanceName}.${event}`; amqp.assertQueue(queueName, { durable: true, @@ -76,6 +77,7 @@ export const initQueues = (instanceName: string, events: string[]) => { export const removeQueues = (instanceName: string, events: string[]) => { if (!events || !events.length) return; + const rabbitConfig = configService.get('RABBITMQ'); const channel = getAMQP(); @@ -94,10 +96,64 @@ export const removeQueues = (instanceName: string, events: string[]) => { assert: true, }); - const queueName = `${instanceName}.${event}`; + const queueName = rabbitConfig.GLOBAL_EVENT_QUEUE ? event : `${instanceName}.${event}`; amqp.deleteQueue(queueName); }); channel.deleteExchange(exchangeName); }; + +interface SendEventData { + instanceName: string; + wuid: string; + event: string; + apiKey?: string; + data: any; +} + +export const sendEventData = ({ data, event, wuid, apiKey, instanceName }: SendEventData) => { + const exchangeName = instanceName ?? 'evolution_exchange'; + + amqpChannel.assertExchange(exchangeName, 'topic', { + durable: true, + autoDelete: false, + assert: true, + }); + + const rabbitConfig = configService.get('RABBITMQ'); + const queueName = rabbitConfig.GLOBAL_EVENT_QUEUE ? event : `${instanceName}.${event}`; + + amqpChannel.assertQueue(queueName, { + durable: true, + autoDelete: false, + arguments: { 'x-queue-type': 'quorum' }, + }); + + amqpChannel.bindQueue(queueName, exchangeName, event); + + const serverUrl = configService.get('SERVER').URL; + const tzoffset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds + const localISOTime = new Date(Date.now() - tzoffset).toISOString(); + const now = localISOTime; + + const message = { + event, + instance: instanceName, + data, + server_url: serverUrl, + date_time: now, + sender: wuid, + }; + + if (apiKey) { + message['apikey'] = apiKey; + } + + logger.log({ + queueName, + exchangeName, + event, + }); + amqpChannel.publish(exchangeName, event, Buffer.from(JSON.stringify(message))); +}; diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index 5000bcb7..ded8fa27 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -20,7 +20,7 @@ import { import { Logger } from '../../config/logger.config'; import { ROOT_DIR } from '../../config/path.config'; import { NotFoundException } from '../../exceptions'; -import { getAMQP, removeQueues } from '../../libs/amqp.server'; +import { getAMQP, removeQueues, sendEventData } from '../../libs/amqp.server'; import { getIO } from '../../libs/socket.server'; import { getSQS, removeQueues as removeQueuesSQS } from '../../libs/sqs.server'; import { ChamaaiRaw, IntegrationRaw, ProxyRaw, RabbitmqRaw, SettingsRaw, SqsRaw, TypebotRaw } from '../models'; @@ -685,40 +685,13 @@ export class WAStartupService { if (amqp) { if (Array.isArray(rabbitmqLocal) && rabbitmqLocal.includes(we)) { - const exchangeName = this.instanceName ?? 'evolution_exchange'; - - amqp.assertExchange(exchangeName, 'topic', { - durable: true, - autoDelete: false, - assert: true, - }); - - const queueName = `${this.instanceName}.${event}`; - - amqp.assertQueue(queueName, { - durable: true, - autoDelete: false, - arguments: { - 'x-queue-type': 'quorum', - }, - }); - - amqp.bindQueue(queueName, exchangeName, event); - - const message = { - event, - instance: this.instance.name, + sendEventData({ data, - server_url: serverUrl, - date_time: now, - sender: this.wuid, - }; - - if (expose && instanceApikey) { - message['apikey'] = instanceApikey; - } - - amqp.publish(exchangeName, event, Buffer.from(JSON.stringify(message))); + event, + instanceName: this.instanceName, + wuid: this.wuid, + apiKey: expose && instanceApikey ? instanceApikey : undefined, + }); if (this.configService.get('LOG').LEVEL.includes('WEBHOOKS')) { const logData = { From ac6e9ae9949a5a04b1dd2561c64a0234d1a6a05c Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Mon, 4 Mar 2024 20:24:15 -0300 Subject: [PATCH 2/5] Improvements in RabbitMQ, added 2 new modes --- Docker/.env.example | 3 +- Dockerfile | 3 +- package.json | 1 + src/config/env.config.ts | 6 +- src/dev-env.yml | 3 +- src/libs/amqp.server.ts | 186 +++++++++++++----- .../services/whatsapp.baileys.service.ts | 3 +- 7 files changed, 149 insertions(+), 56 deletions(-) diff --git a/Docker/.env.example b/Docker/.env.example index ca2dc377..6c3865ed 100644 --- a/Docker/.env.example +++ b/Docker/.env.example @@ -47,7 +47,8 @@ REDIS_URI=redis://redis:6379 REDIS_PREFIX_KEY=evdocker RABBITMQ_ENABLED=false -RABBITMQ_GLOBAL_EVENT_QUEUE=false +RABBITMQ_RABBITMQ_MODE=isolated +RABBITMQ_EXCHANGE_NAME=evolution_exchange RABBITMQ_URI=amqp://guest:guest@rabbitmq:5672 WEBSOCKET_ENABLED=false diff --git a/Dockerfile b/Dockerfile index 0c6752aa..2752c8ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,7 +62,8 @@ ENV REDIS_URI=redis://redis:6379 ENV REDIS_PREFIX_KEY=evolution ENV RABBITMQ_ENABLED=false -ENV RABBITMQ_GLOBAL_EVENT_QUEUE=false +ENV RABBITMQ_MODE=isolated +ENV RABBITMQ_EXCHANGE_NAME=evolution_exchange ENV RABBITMQ_URI=amqp://guest:guest@rabbitmq:5672 ENV WEBSOCKET_ENABLED=false diff --git a/package.json b/package.json index ef023149..1df6df41 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "yamljs": "^0.3.0" }, "devDependencies": { + "@types/amqplib": "^0.10.5", "@types/compression": "^1.7.2", "@types/cors": "^2.8.13", "@types/express": "^4.17.17", diff --git a/src/config/env.config.ts b/src/config/env.config.ts index 95a3e7f8..c8e23944 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -71,7 +71,8 @@ export type Redis = { export type Rabbitmq = { ENABLED: boolean; - GLOBAL_EVENT_QUEUE: boolean; + MODE: 'isolated' | 'global' | 'single'; + EXCHANGE_NAME: string; // available for global and single, isolated mode will use instance name as exchange URI: string; }; @@ -283,7 +284,8 @@ export class ConfigService { }, RABBITMQ: { ENABLED: process.env?.RABBITMQ_ENABLED === 'true', - GLOBAL_EVENT_QUEUE: process.env?.RABBITMQ_GLOBAL_EVENT_QUEUE === 'true', + MODE: (process.env?.RABBITMQ_MODE as Rabbitmq['MODE']) || 'single', + EXCHANGE_NAME: process.env?.RABBITMQ_EXCHANGE_NAME || 'evolution_exchange', URI: process.env.RABBITMQ_URI || '', }, SQS: { diff --git a/src/dev-env.yml b/src/dev-env.yml index 02b9fa54..1edecc07 100644 --- a/src/dev-env.yml +++ b/src/dev-env.yml @@ -83,7 +83,8 @@ REDIS: RABBITMQ: ENABLED: false - GLOBAL_EVENT_QUEUE: false + MODE: "global" + EXCHANGE_NAME: "evolution_exchange" URI: "amqp://guest:guest@localhost:5672" SQS: diff --git a/src/libs/amqp.server.ts b/src/libs/amqp.server.ts index 866cf0c4..093a4aaa 100644 --- a/src/libs/amqp.server.ts +++ b/src/libs/amqp.server.ts @@ -1,16 +1,35 @@ -import * as amqp from 'amqplib/callback_api'; +import { Channel, connect } from 'amqplib/callback_api'; import { configService, HttpServer, Rabbitmq } from '../config/env.config'; import { Logger } from '../config/logger.config'; +import { Events } from '../whatsapp/types/wa.types'; const logger = new Logger('AMQP'); -let amqpChannel: amqp.Channel | null = null; +const parseEvtName = (evt: string) => evt.replace(/_/g, '.').toLowerCase(); + +const globalQueues: { [key: string]: Events[] } = { + contacts: [Events.CONTACTS_SET, Events.CONTACTS_UPDATE, Events.CONTACTS_UPSERT], + messages: [ + Events.MESSAGES_DELETE, + Events.MESSAGES_SET, + Events.MESSAGES_UPDATE, + Events.MESSAGES_UPSERT, + Events.MESSAGING_HISTORY_SET, + Events.SEND_MESSAGE, + ], + chats: [Events.CHATS_DELETE, Events.CHATS_SET, Events.CHATS_UPDATE, Events.CHATS_UPSERT], + groups: [Events.GROUPS_UPDATE, Events.GROUPS_UPSERT, Events.GROUP_PARTICIPANTS_UPDATE], + others: [], // All other events not included in the above categories +}; + +let amqpChannel: Channel | null = null; export const initAMQP = () => { return new Promise((resolve, reject) => { const rabbitConfig = configService.get('RABBITMQ'); - amqp.connect(rabbitConfig.URI, (error, connection) => { + console.log(rabbitConfig); + connect(rabbitConfig.URI, (error, connection) => { if (error) { reject(error); return; @@ -22,12 +41,9 @@ export const initAMQP = () => { return; } - const exchangeName = 'evolution_exchange'; - - channel.assertExchange(exchangeName, 'topic', { + channel.assertExchange(rabbitConfig.EXCHANGE_NAME, 'topic', { durable: true, autoDelete: false, - assert: true, }); amqpChannel = channel; @@ -39,69 +55,131 @@ export const initAMQP = () => { }); }; -export const getAMQP = (): amqp.Channel | null => { +export const getAMQP = (): Channel | null => { return amqpChannel; }; export const initQueues = (instanceName: string, events: string[]) => { if (!instanceName || !events || !events.length) return; const rabbitConfig = configService.get('RABBITMQ'); + const TWO_DAYS_IN_MS = 2 * 24 * 60 * 60 * 1000; + const amqp = getAMQP(); - const queues = events.map((event) => { - return `${event.replace(/_/g, '.').toLowerCase()}`; - }); + let exchangeName = rabbitConfig.EXCHANGE_NAME; - queues.forEach((event) => { - const amqp = getAMQP(); - const exchangeName = instanceName ?? 'evolution_exchange'; + const receivedEvents = events.map(parseEvtName); + if (rabbitConfig.MODE === 'isolated') { + exchangeName = instanceName; + receivedEvents.forEach((event) => { + amqp.assertExchange(exchangeName, 'topic', { + durable: true, + autoDelete: false, + }); + + const queueName = event; + amqp.assertQueue(queueName, { + durable: true, + autoDelete: false, + messageTtl: TWO_DAYS_IN_MS, + arguments: { + 'x-queue-type': 'quorum', + }, + }); + + amqp.bindQueue(queueName, exchangeName, event); + }); + } else if (rabbitConfig.MODE === 'single') { amqp.assertExchange(exchangeName, 'topic', { durable: true, autoDelete: false, - assert: true, }); - const queueName = rabbitConfig.GLOBAL_EVENT_QUEUE ? event : `${instanceName}.${event}`; - + const queueName = 'evolution'; amqp.assertQueue(queueName, { durable: true, autoDelete: false, + messageTtl: TWO_DAYS_IN_MS, arguments: { 'x-queue-type': 'quorum', }, }); - amqp.bindQueue(queueName, exchangeName, event); - }); + receivedEvents.forEach((event) => { + amqp.bindQueue(queueName, exchangeName, event); + }); + } else if (rabbitConfig.MODE === 'global') { + const queues = Object.keys(globalQueues); + + const addQueues = queues.filter((evt) => { + if (evt === 'others') { + return receivedEvents.some( + (e) => + !Object.values(globalQueues) + .flat() + .includes(e as Events), + ); + } + return globalQueues[evt].some((e) => receivedEvents.includes(e)); + }); + + addQueues.forEach((event) => { + amqp.assertExchange(exchangeName, 'topic', { + durable: true, + autoDelete: false, + }); + + const queueName = event; + amqp.assertQueue(queueName, { + durable: true, + autoDelete: false, + messageTtl: TWO_DAYS_IN_MS, + arguments: { + 'x-queue-type': 'quorum', + }, + }); + + if (globalQueues[event].length === 0) { + // Other events + const otherEvents = Object.values(globalQueues).flat(); + for (const subEvent in Events) { + const eventCode = Events[subEvent]; + if (otherEvents.includes(eventCode)) continue; + if (!receivedEvents.includes(eventCode)) continue; + amqp.bindQueue(queueName, exchangeName, eventCode); + } + } else { + globalQueues[event].forEach((subEvent) => { + amqp.bindQueue(queueName, exchangeName, subEvent); + }); + } + }); + } else { + throw new Error('Invalid RabbitMQ mode'); + } }; export const removeQueues = (instanceName: string, events: string[]) => { if (!events || !events.length) return; const rabbitConfig = configService.get('RABBITMQ'); + let exchangeName = rabbitConfig.EXCHANGE_NAME; + const amqp = getAMQP(); + + const receivedEvents = events.map(parseEvtName); + if (rabbitConfig.MODE === 'isolated') { + exchangeName = instanceName; + receivedEvents.forEach((event) => { + amqp.assertExchange(exchangeName, 'topic', { + durable: true, + autoDelete: false, + }); - const channel = getAMQP(); - - const queues = events.map((event) => { - return `${event.replace(/_/g, '.').toLowerCase()}`; - }); - - const exchangeName = instanceName ?? 'evolution_exchange'; - - queues.forEach((event) => { - const amqp = getAMQP(); + const queueName = event; - amqp.assertExchange(exchangeName, 'topic', { - durable: true, - autoDelete: false, - assert: true, + amqp.unbindQueue(queueName, exchangeName, event); }); - - const queueName = rabbitConfig.GLOBAL_EVENT_QUEUE ? event : `${instanceName}.${event}`; - - amqp.deleteQueue(queueName); - }); - - channel.deleteExchange(exchangeName); + amqp.deleteExchange(instanceName); + } }; interface SendEventData { @@ -113,30 +191,40 @@ interface SendEventData { } export const sendEventData = ({ data, event, wuid, apiKey, instanceName }: SendEventData) => { - const exchangeName = instanceName ?? 'evolution_exchange'; + const rabbitConfig = configService.get('RABBITMQ'); + let exchangeName = rabbitConfig.EXCHANGE_NAME; + if (rabbitConfig.MODE === 'isolated') exchangeName = instanceName; amqpChannel.assertExchange(exchangeName, 'topic', { durable: true, autoDelete: false, - assert: true, }); - - const rabbitConfig = configService.get('RABBITMQ'); - const queueName = rabbitConfig.GLOBAL_EVENT_QUEUE ? event : `${instanceName}.${event}`; - + let queueName = event; + if (rabbitConfig.MODE === 'single') { + queueName = 'evolution'; + } else if (rabbitConfig.MODE === 'global') { + let eventName = ''; + Object.keys(globalQueues).forEach((key) => { + if (globalQueues[key].includes(event as Events)) { + eventName = key; + } + if (eventName === '' && key === 'others') { + eventName = key; + } + }); + queueName = eventName; + } amqpChannel.assertQueue(queueName, { durable: true, autoDelete: false, arguments: { 'x-queue-type': 'quorum' }, }); - amqpChannel.bindQueue(queueName, exchangeName, event); const serverUrl = configService.get('SERVER').URL; const tzoffset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds const localISOTime = new Date(Date.now() - tzoffset).toISOString(); const now = localISOTime; - const message = { event, instance: instanceName, @@ -145,11 +233,9 @@ export const sendEventData = ({ data, event, wuid, apiKey, instanceName }: SendE date_time: now, sender: wuid, }; - if (apiKey) { message['apikey'] = apiKey; } - logger.log({ queueName, exchangeName, diff --git a/src/whatsapp/services/whatsapp.baileys.service.ts b/src/whatsapp/services/whatsapp.baileys.service.ts index 1ed58471..4e3a4960 100644 --- a/src/whatsapp/services/whatsapp.baileys.service.ts +++ b/src/whatsapp/services/whatsapp.baileys.service.ts @@ -1124,7 +1124,8 @@ export class BaileysStartupService extends WAStartupService { 5: 'PLAYED', }; for await (const { key, update } of args) { - if (settings?.groups_ignore && key.remoteJid.includes('@g.us')) { + console.log(key); + if (settings?.groups_ignore && key.remoteJid?.includes('@g.us')) { this.logger.verbose('group ignored'); return; } From 10b48aed970649fccea7a4b8e500b60e9f8bb2d4 Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Mon, 4 Mar 2024 20:27:34 -0300 Subject: [PATCH 3/5] Update RABBITMQ_MODE to global in .env.example and Dockerfile --- Docker/.env.example | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Docker/.env.example b/Docker/.env.example index 6c3865ed..95ce8912 100644 --- a/Docker/.env.example +++ b/Docker/.env.example @@ -47,7 +47,7 @@ REDIS_URI=redis://redis:6379 REDIS_PREFIX_KEY=evdocker RABBITMQ_ENABLED=false -RABBITMQ_RABBITMQ_MODE=isolated +RABBITMQ_RABBITMQ_MODE=global RABBITMQ_EXCHANGE_NAME=evolution_exchange RABBITMQ_URI=amqp://guest:guest@rabbitmq:5672 diff --git a/Dockerfile b/Dockerfile index 2752c8ce..46b1bba1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,7 +62,7 @@ ENV REDIS_URI=redis://redis:6379 ENV REDIS_PREFIX_KEY=evolution ENV RABBITMQ_ENABLED=false -ENV RABBITMQ_MODE=isolated +ENV RABBITMQ_MODE=global ENV RABBITMQ_EXCHANGE_NAME=evolution_exchange ENV RABBITMQ_URI=amqp://guest:guest@rabbitmq:5672 From 196c2e0ed80d9f7a081caaf3068b704c4332b1b6 Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Thu, 7 Mar 2024 18:28:56 -0300 Subject: [PATCH 4/5] Removed logs & updated version --- Dockerfile | 2 +- package.json | 2 +- src/docs/swagger.yaml | 2 +- src/libs/amqp.server.ts | 1 - src/whatsapp/services/whatsapp.baileys.service.ts | 1 - src/whatsapp/services/whatsapp.business.service.ts | 4 ---- 6 files changed, 3 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 46b1bba1..b5068fff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM node:20.7.0-alpine AS builder -LABEL version="1.6.2" description="Api to control whatsapp features through http requests." +LABEL version="1.7.0" description="Api to control whatsapp features through http requests." LABEL maintainer="Davidson Gomes" git="https://github.com/DavidsonGomes" LABEL contact="contato@agenciadgcode.com" diff --git a/package.json b/package.json index 1df6df41..4e8ba4ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "evolution-api", - "version": "1.6.2", + "version": "1.7.0", "description": "Rest api for communication with WhatsApp", "main": "./dist/src/main.js", "scripts": { diff --git a/src/docs/swagger.yaml b/src/docs/swagger.yaml index 4a8f55ee..a6bf3288 100644 --- a/src/docs/swagger.yaml +++ b/src/docs/swagger.yaml @@ -25,7 +25,7 @@ info: [![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/26869335-5546d063-156b-4529-915f-909dd628c090?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D26869335-5546d063-156b-4529-915f-909dd628c090%26entityType%3Dcollection%26workspaceId%3D339a4ee7-378b-45c9-b5b8-fd2c0a9c2442) - version: 1.6.2 + version: 1.7.0 contact: name: DavidsonGomes email: contato@agenciadgcode.com diff --git a/src/libs/amqp.server.ts b/src/libs/amqp.server.ts index 093a4aaa..9500958c 100644 --- a/src/libs/amqp.server.ts +++ b/src/libs/amqp.server.ts @@ -28,7 +28,6 @@ let amqpChannel: Channel | null = null; export const initAMQP = () => { return new Promise((resolve, reject) => { const rabbitConfig = configService.get('RABBITMQ'); - console.log(rabbitConfig); connect(rabbitConfig.URI, (error, connection) => { if (error) { reject(error); diff --git a/src/whatsapp/services/whatsapp.baileys.service.ts b/src/whatsapp/services/whatsapp.baileys.service.ts index 4e3a4960..129fe1b7 100644 --- a/src/whatsapp/services/whatsapp.baileys.service.ts +++ b/src/whatsapp/services/whatsapp.baileys.service.ts @@ -1124,7 +1124,6 @@ export class BaileysStartupService extends WAStartupService { 5: 'PLAYED', }; for await (const { key, update } of args) { - console.log(key); if (settings?.groups_ignore && key.remoteJid?.includes('@g.us')) { this.logger.verbose('group ignored'); return; diff --git a/src/whatsapp/services/whatsapp.business.service.ts b/src/whatsapp/services/whatsapp.business.service.ts index cb802b7f..0d4f723c 100644 --- a/src/whatsapp/services/whatsapp.business.service.ts +++ b/src/whatsapp/services/whatsapp.business.service.ts @@ -303,7 +303,6 @@ export class BusinessStartupService extends WAStartupService { if (received.contacts) pushName = received.contacts[0].profile.name; if (received.messages) { - console.log('received?.messages[0]', received?.messages[0]); const key = { id: received.messages[0].id, remoteJid: this.phoneNumber, @@ -772,9 +771,6 @@ export class BusinessStartupService extends WAStartupService { } })(); - console.log('messageSent', messageSent); - console.log('message', message); - const messageRaw: MessageRaw = { key: { fromMe: true, id: messageSent?.messages[0]?.id, remoteJid: this.createJid(number) }, //pushName: messageSent.pushName, From e27e990cd66109e99ff9a549e8d51ab881ddfdc4 Mon Sep 17 00:00:00 2001 From: Judson Cairo Date: Thu, 7 Mar 2024 18:36:15 -0300 Subject: [PATCH 5/5] Adapt to make compatible with current running services --- src/config/env.config.ts | 2 +- src/libs/amqp.server.ts | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/config/env.config.ts b/src/config/env.config.ts index c8e23944..72ca3573 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -284,7 +284,7 @@ export class ConfigService { }, RABBITMQ: { ENABLED: process.env?.RABBITMQ_ENABLED === 'true', - MODE: (process.env?.RABBITMQ_MODE as Rabbitmq['MODE']) || 'single', + MODE: (process.env?.RABBITMQ_MODE as Rabbitmq['MODE']) || 'isolated', EXCHANGE_NAME: process.env?.RABBITMQ_EXCHANGE_NAME || 'evolution_exchange', URI: process.env.RABBITMQ_URI || '', }, diff --git a/src/libs/amqp.server.ts b/src/libs/amqp.server.ts index 9500958c..7ee9f886 100644 --- a/src/libs/amqp.server.ts +++ b/src/libs/amqp.server.ts @@ -76,7 +76,7 @@ export const initQueues = (instanceName: string, events: string[]) => { autoDelete: false, }); - const queueName = event; + const queueName = `${instanceName}.${event}`; amqp.assertQueue(queueName, { durable: true, autoDelete: false, @@ -173,9 +173,8 @@ export const removeQueues = (instanceName: string, events: string[]) => { autoDelete: false, }); - const queueName = event; - - amqp.unbindQueue(queueName, exchangeName, event); + const queueName = `${instanceName}.${event}`; + amqp.deleteQueue(queueName); }); amqp.deleteExchange(instanceName); }