Skip to content

Commit 9123d70

Browse files
committed
fix: create rabbitmq queues on set config
1 parent 16a18c4 commit 9123d70

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

src/libs/amqp.server.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,31 @@ export const initAMQP = () => {
4141
export const getAMQP = (): amqp.Channel | null => {
4242
return amqpChannel;
4343
};
44+
45+
export const initQueues = (instanceName: string, events: string[]) => {
46+
const queues = events.map((event) => {
47+
return `${event.replace(/_/g, '.').toLowerCase()}`;
48+
});
49+
50+
queues.forEach((event) => {
51+
const amqp = getAMQP();
52+
const exchangeName = instanceName ?? 'evolution_exchange';
53+
54+
amqp.assertExchange(exchangeName, 'topic', {
55+
durable: true,
56+
autoDelete: false,
57+
});
58+
59+
const queueName = `${instanceName}.${event}`;
60+
61+
amqp.assertQueue(queueName, {
62+
durable: true,
63+
autoDelete: false,
64+
arguments: {
65+
'x-queue-type': 'quorum',
66+
},
67+
});
68+
69+
amqp.bindQueue(queueName, exchangeName, event);
70+
});
71+
};

src/whatsapp/controllers/instance.controller.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import EventEmitter2 from 'eventemitter2';
55
import { ConfigService, HttpServer } from '../../config/env.config';
66
import { Logger } from '../../config/logger.config';
77
import { BadRequestException, InternalServerErrorException } from '../../exceptions';
8+
import { initQueues } from '../../libs/amqp.server';
89
import { RedisCache } from '../../libs/redis.client';
910
import { InstanceDto } from '../dto/instance.dto';
1011
import { RepositoryBroker } from '../repository/repository.manager';
@@ -232,10 +233,12 @@ export class InstanceController {
232233
}
233234
this.rabbitmqService.create(instance, {
234235
enabled: true,
235-
events: rabbitmq_events,
236+
events: newEvents,
236237
});
237238

238239
rabbitmqEvents = (await this.rabbitmqService.find(instance)).events;
240+
241+
initQueues(instance.instanceName, rabbitmqEvents);
239242
} catch (error) {
240243
this.logger.log(error);
241244
}

src/whatsapp/services/rabbitmq.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Logger } from '../../config/logger.config';
2+
import { initQueues } from '../../libs/amqp.server';
23
import { InstanceDto } from '../dto/instance.dto';
34
import { RabbitmqDto } from '../dto/rabbitmq.dto';
45
import { RabbitmqRaw } from '../models';
@@ -13,6 +14,7 @@ export class RabbitmqService {
1314
this.logger.verbose('create rabbitmq: ' + instance.instanceName);
1415
this.waMonitor.waInstances[instance.instanceName].setRabbitmq(data);
1516

17+
initQueues(instance.instanceName, data.events);
1618
return { rabbitmq: { ...instance, rabbitmq: data } };
1719
}
1820

0 commit comments

Comments
 (0)