From 3297364c10f9e52427ef9a4dfdaf17a2a926561a Mon Sep 17 00:00:00 2001 From: Thiago Souza Date: Sun, 25 May 2025 02:42:51 -0300 Subject: [PATCH] fix: update RabbitMQ frame_max parameter for 4.1+ compatibility Updates the minimum frame_max value from 4096 to 8192 to meet the requirements of RabbitMQ 4.1+ servers. This resolves connection failures with newer RabbitMQ versions while maintaining backwards compatibility with older versions. --- .env.example | 1 + .../event/rabbitmq/rabbitmq.controller.ts | 14 +++++++++++++- src/config/env.config.ts | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 02eca612..47ef0777 100644 --- a/.env.example +++ b/.env.example @@ -47,6 +47,7 @@ DATABASE_DELETE_MESSAGE=true RABBITMQ_ENABLED=false RABBITMQ_URI=amqp://localhost RABBITMQ_EXCHANGE_NAME=evolution +RABBITMQ_FRAME_MAX=8192 # Global events - By enabling this variable, events from all instances are sent in the same event queue. RABBITMQ_GLOBAL_ENABLED=false # Prefix key to queue name diff --git a/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts b/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts index 22defde5..89436f9f 100644 --- a/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts +++ b/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts @@ -21,9 +21,21 @@ export class RabbitmqController extends EventController implements EventControll await new Promise((resolve, reject) => { const uri = configService.get('RABBITMQ').URI; + const frameMax = configService.get('RABBITMQ').FRAME_MAX; const rabbitmqExchangeName = configService.get('RABBITMQ').EXCHANGE_NAME; - amqp.connect(uri, (error, connection) => { + const url = new URL(uri); + const connectionOptions = { + protocol: url.protocol.slice(0, -1), + hostname: url.hostname, + port: url.port || 5672, + username: url.username || 'guest', + password: url.password || 'guest', + vhost: url.pathname.slice(1) || '/', + frameMax: frameMax + }; + + amqp.connect(connectionOptions, (error, connection) => { if (error) { reject(error); diff --git a/src/config/env.config.ts b/src/config/env.config.ts index 78ca891c..168df6e1 100644 --- a/src/config/env.config.ts +++ b/src/config/env.config.ts @@ -94,6 +94,7 @@ export type EventsRabbitmq = { export type Rabbitmq = { ENABLED: boolean; URI: string; + FRAME_MAX: number; EXCHANGE_NAME: string; GLOBAL_ENABLED: boolean; EVENTS: EventsRabbitmq; @@ -359,6 +360,7 @@ export class ConfigService { PREFIX_KEY: process.env?.RABBITMQ_PREFIX_KEY || 'evolution', EXCHANGE_NAME: process.env?.RABBITMQ_EXCHANGE_NAME || 'evolution_exchange', URI: process.env.RABBITMQ_URI || '', + FRAME_MAX: Number.parseInt(process.env.RABBITMQ_FRAME_MAX) || 8192, EVENTS: { APPLICATION_STARTUP: process.env?.RABBITMQ_EVENTS_APPLICATION_STARTUP === 'true', INSTANCE_CREATE: process.env?.RABBITMQ_EVENTS_INSTANCE_CREATE === 'true',